Tôi đang làm việc để tối ưu hóa trang web của mình và tôi đã có các truy vấn chậm MySQL đăng nhập trong vài ngày, nhưng sau khi truy cập> 260 triệu truy vấn, nó chỉ ghi lại 6 truy vấn chậm và những truy vấn đặc biệt do tôi thực hiện phpMyAdmin. Tôi tự hỏi nếu có một cái gì đó để đăng nhập chậm PHP thời gian thực hiện trang để tôi có thể tìm thấy một số trang đang hogging tài nguyên, hơn là các truy vấn cụ thể.PHP tương đương với nhật ký truy vấn chậm của MySQL?
Trả lời
Đầu tiên, có xdebug, trong đó có một profiler, nhưng tôi sẽ không sử dụng nó trên một máy sản xuất, vì nó tiêm mã và mang lại tốc độ thu thập thông tin. Rất tốt cho môi trường thử nghiệm, mặc dù.
Nếu bạn muốn đo tốc độ trên môi trường sản xuất, tôi sẽ chỉ đo bằng tay. microtime()
là chức năng cho những thứ này trong PHP. Giả sử bạn có một header.php và footer.php mà được gọi bằng tất cả các kịch bản 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
);
Cảm ơn, đề xuất thứ hai của bạn là một ý tưởng hay. Tôi đã hy vọng sẽ có một số cách để tự động hóa điều này, nhưng điều này hoạt động tốt như không có nhiều nỗ lực. –
Ồ, một điều để thêm vào điều này. FILE_APPEND phải được thêm làm cờ, vì vậy bạn không chỉ nhận được quyền truy cập gần đây nhất trong nhật ký. –
Thx, tôi luôn quên điều đó :) – soulmerge
Bạn có thể quấn kịch bản của bạn trong một bộ đếm thời gian đơn giản, như thế này:
/*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";
Lưu ý rằng sẽ thêm hai hành chức năng và một chút nhỏ bé của toán như chi phí.
thể bạn không đăng ký một chức năng tắt máy mà các cuộc gọi dấu chấm hết cho bộ đếm thời gian? http://us3.php.net/register_shutdown_function Bằng cách đó, bạn chỉ cần khởi động bộ hẹn giờ ở bất cứ nơi nào bạn nghĩ có thể có vấn đề.
gì về auto_prepend_file và auto_append_file, chỉ viết một bài về nó http://blog.xrado.si/post/php-slow-log
đây có phải là bài viết đúng không? http://blog.xrado.si/post/php-slow-log –
có, tôi có tên miền mới – xrado
Nếu bạn đang sử dụng FastCGI để thực hiện kịch bản PHP của bạn, bạn có thể sử dụng Process FastCGI Manager (FPM, php-fpm) mà cũng hỗ trợ một được gọi là "làm chậm".
Bạn có thể bật tính năng này trong cấu hình php của php-fpm (cho debian này là /etc/php5/fpm/pool.d/www.conf
) với tùy chọn cấu hình: request_slowlog_timeout và slowlog.
request_slowlog_timeout
Thời gian chờ phục vụ một yêu cầu duy nhất sau đó một vết lùi PHP sẽ được đổ vào các tập tin 'slowlog'. Giá trị '0' có nghĩa là 'Tắt'. Các đơn vị có sẵn: s (econds) (mặc định), m (inutes), h (của chúng tôi), hoặc d (ays). Giá trị mặc định: 0.
làm chậm lại
Tệp nhật ký cho yêu cầu chậm. Giá trị mặc định: # INSTALL_PREFIX #/log/php-fpm.log.slow.
từ http://php.net/manual/en/install.fpm.configuration.php
Xem thêm: http://php.net/manual/en/install.fpm.php và http://rtcamp.com/tutorials/php/fpm-slow-log/
- 1. Truy vấn ghi nhật ký truy vấn chậm của MySQL ghi nhật ký truy vấn nhanh
- 2. Truy vấn MySQL tương đương với PHP strip_tags là gì?
- 3. Tìm vị trí của nhật ký truy vấn chậm của MySQL qua PHP
- 4. Truy vấn chậm của MySQL
- 5. Bật nhật ký truy vấn chung của MySQL với JDBC
- 6. Nhật ký truy vấn chậm của MySQL - chậm như thế nào?
- 7. PHP tương đương với UNHEX của MySQL() là gì?
- 8. Đơn vị thời gian trong nhật ký truy vấn chậm của MySQL là gì?
- 9. truy vấn cập nhật mysql với truy vấn phụ
- 10. Oracle tương đương với bản cập nhật MySQL bỏ qua
- 11. Ngăn không cho một truy vấn xuất hiện trong nhật ký truy vấn chậm
- 12. Truy vấn UNION chậm - MySQL
- 13. PHP với MySQL bị chậm
- 14. truy vấn tương đương trong mysql là gì?
- 15. Làm cách nào tôi có thể bật nhật ký truy vấn chậm MySQL trên máy chủ của mình?
- 16. Javascript tương đương với urldecode của php()
- 17. "SELECT/*! N SQL_NO_CACHE */* FROM` mytable` có nghĩa là gì trong nhật ký truy vấn chậm của MySQL?
- 18. Python tương đương với IFNULL của MySQL
- 19. Perl tương đương với get_file_contents của PHP()?
- 20. mysql "nhóm bởi" truy vấn rất chậm
- 21. Mysql VIEWS so với truy vấn PHP
- 22. Oracle Tương đương với kiểu TEXT của MySQL
- 23. MySQL tương đương với SEQUENCE.NEXTVAL Oracle
- 24. MySQL ifnull tương đương cho php
- 25. Javascript tương đương với strtotime của php()?
- 26. Perl tương đương với preg_callback của PHP
- 27. Perl tương đương với escapeshellarg của PHP
- 28. Ruby tương đương với $ của PHP $
- 29. Đi tương đương với 'implode' của PHP
- 30. Java tương đương với preg_replace_callback của PHP
Có thể là các truy vấn phpMyAdmin là ưu tiên thấp, điều đó sẽ làm cho chúng hiển thị như 'chậm' – karim79
Tôi chỉ nhắc đến đó để nói không có truy vấn nào cần được tối ưu hóa trên trang web. –
Nếu bạn muốn có các phép đo chính xác hơn so với câu trả lời được chấp nhận, để tìm vị trí trong tài liệu, nút cổ chai của bạn là - bạn có thể kiểm tra Điểm chuẩn từ PEAR. Nó cho phép bạn thiết lập các điểm đánh dấu trong mã của bạn để tìm các cổ chai. –