Pracuję nad zoptymalizowaniem mojej strony, a ja już miałem wolne loginy MySQL od kilku dni, ale po przejściu ponad 260 000 zapytań, zalogowałem się tylko 6 powolnych zapytań, a te były wykonywane przeze mnie na phpMyAdmin. Zastanawiam się, czy istnieje coś do zapisania wolnego czasu wykonywania strony PHP, aby znaleźć pewne strony, które hogging zasobów, a nie konkretnych zapytań.Odpowiednik PHP do dziennika powolnego zapytania MySQL?
Odpowiedz
Najpierw jest xdebug, który ma profiler, ale nie użyłbym tego na maszynie produkcyjnej, ponieważ wstrzykuje kod i przyspiesza indeksowanie. Bardzo dobre dla środowisk testowych.
Jeśli chcesz mierzyć prędkości w produktywnym środowisku, chciałbym tylko mierzyć ręcznie. microtime()
to funkcja dla tych rzeczy w PHP. Zakładając, że masz header.php i footer.php który sprawdzony przez wszystkich skryptów PHP:
# In your header.php (or tpl)
$GLOBALS['_execution_start'] = microtime(true);
# In your footer.php (or tpl)
file_put_contents(
'/tmp/my_profiling_results.txt',
microtime(true) - $GLOBALS['_execution_start'] . ':' . print_r($_SERVER, true) . "\n",
FILE_APPEND
);
Dzięki, twoja druga sugestia to dobry pomysł. Miałem nadzieję, że będzie jakiś sposób, żeby to zautomatyzować, ale działa to równie dobrze bez większego wysiłku. –
Och, jedna rzecz do dodania do tego. FILE_APPEND należy dodać jako flagę, aby nie tylko uzyskać najnowszy dostęp do dziennika. –
Thx, zawsze zapominam, że :) – soulmerge
Można owinąć swoje skrypty w prosty zegar, tak:
/*in your header or at the top of the page*/
$time_start = microtime(true);
/* your script goes here */
/*in your footer, or at the bottom of the page*/
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "It took $time seconds\n";
Zauważ, że będzie dodać dwie egzekucje funkcyjne i odrobinę matematyki jako napowietrznych.
mógłbyś nie przypisać funkcję wyłączania, który wywołuje kres czasowy? http://us3.php.net/register_shutdown_function W ten sposób wystarczy uruchomić minutnik w dowolnym miejscu, w którym może wystąpić problem.
co auto_prepend_file i auto_append_file, prostu napisał post o to http://blog.xrado.si/post/php-slow-log
czy to jest właściwy post? http://blog.xrado.si/post/php-slow-log –
tak, mam nową domenę – xrado
Jeśli używasz FastCGI do wykonywania skryptów PHP można użyć Menedżera FastCGI Process (FPM, PHP-FPM), który wspiera także tak zwany "slowlog".
Możesz go włączyć w konfiguracji php swojego php-fpm (dla debiana jest to /etc/php5/fpm/pool.d/www.conf
) z opcjami konfiguracyjnymi: request_slowlog_timeout i slowlog.
request_slowlog_timeout
Timeout dla służąc pojedynczego żądania, po którym backtrace PHP będzie zrzucana do 'slowlog' pliku. Wartość "0" oznacza "Wył.". Dostępne jednostki: s (econds) (domyślnie), m (inutes), h (nasz) lub d (ays). Wartość domyślna: 0.
slowlog
Plik dziennika dla wolnych wniosków. Wartość domyślna: # INSTALL_PREFIX #/log/php-fpm.log.slow.
z http://php.net/manual/en/install.fpm.configuration.php
również zobaczyć: http://php.net/manual/en/install.fpm.php i http://rtcamp.com/tutorials/php/fpm-slow-log/
- 1. Pobierz lokalizację dziennika wolnego dziennika MySQL za pośrednictwem PHP
- 2. Jak mogę włączyć protokół powolnego dziennika MySQL na moim serwerze?
- 3. Django filtr dziennika powolnego zapytań SQL
- 4. Wyszukiwanie dziennika MySQL Bin dla zapytania
- 5. Zapobieganie wyświetlaniu pojedynczego zapytania w dzienniku powolnego zapytania
- 6. Zapytania mysql PHP
- 7. wynik zapytania mysql do php tablicy
- 8. PHP: odpowiednik funkcji SUBSTRING_INDEX MySQL?
- 9. Potrzebuję powolnego zapytania w AdventureWorks (SQL 2005)
- 10. Kod PHP do konwersji zapytania MySQL do CSV
- 11. Czy istnieje odpowiednik MySQL dla PHP preg_replace?
- 12. Co to jest odpowiednik PHP UNHEX() MySQL?
- 13. utwórz tablicę z zapytania mysql php
- 14. MySQL odpowiednik SEQUENCE.NEXTVAL Oracle
- 15. generate_series() odpowiednik w MySQL
- 16. Jak poprawnie wydrukować zmienną do dziennika błędów php
- 17. ROW_NUMBER() odpowiednik w MySQL do wstawiania
- 18. MySQL DATETIME DIFF zapytania
- 19. Tworzenie dynamicznego zapytania mysql przy użyciu zmiennych php
- 20. Jak rejestrować zapytania mySQL bez indeksów?
- 21. Najprostszy sposób buforowania wyników zapytania MySQL za pomocą PHP?
- 22. Przypisywanie wyników zapytania do zmiennej MySQL
- 23. Eksportowanie wyników zapytania Mysql do programu Excel?
- 24. Node.js - timeout zapytania mysql
- 25. Hierarchiczne zapytania w MySQL
- 26. skomplikowane zapytania mysql problem
- 27. Jak dokładnie działają zapytania bazy danych PHP/MySQL?
- 28. php mysql bind-param, jak przygotować oświadczenie dla aktualizacji zapytania
- 29. Jak iterować wiersz za pomocą zapytania mysql w php
- 30. Odpowiednik PHP do metody C# string.IsNullOrEmpty?
To może być to, że zapytania phpMyAdmin jest niski priorytet, które mogłyby spowodować ich, aby pokazać się jako „powolny” – karim79
właśnie wspomnieć, że aby powiedzieć że żadne z nich nie wymagało optymalizacji w witrynie. –
Jeśli potrzebujesz dokładniejszych pomiarów niż w zaakceptowanej odpowiedzi, aby znaleźć miejsce w dokumencie, w którym wąskie gardło jest - możesz sprawdzić wartość odniesienia z PEAR. Pozwala ci ustawić znaczniki w kodzie, aby znaleźć szyjki butelek. –