fastcgi_finish_request()
這個特性可以提高一些 php 請求的處理速度。
例如程序步驟是:
1.程序處理頁面邏輯
2.保存數據
3.返回結果
可以改成
1.處理邏輯
2.返回結果
fastcgi_finish_request()
3.保存數據 //調用這個函數,會強制處理進程返回結果,並將後續邏輯在後臺執行,不影響前端用戶體驗
request_slowlog_timeout
範圍: php-fpm.conf 選項
分類: 方便
這個選項能讓你跟蹤執行緩慢的腳本並把他們連同調用棧一起記錄再日誌文件中。例如如下設置:
<value name="request_slowlog_timeout">5s</value>
<value name="slowlog">logs/slow.log</value>
記錄的 slow.log 可能是這個樣子:
Sep 21 16:22:19.399162 pid 29715 (pool default)
script_filename = /local/www/stable/www/catalogue.php
[0x00007fff23618120] mysql_query() /srv/stable/common/Database/class.MySQLRequest.php:20
[0x00007fff23618560] getResult() /srv/stable/common/Database/class.Facade.php:106
[0x00007fff23618aa0] query() /srv/stable/common/mysite.com/ORM/class.UsersMapper.php:99
[0x00007fff23618d60] resolveByID() /srv/stable/common/mysite.com/ORM/class.User.php:629
[0x00007fff236193b0] getData() /srv/stable/common/class.DataEntity.php:90
[0x00007fff236195d0] load() /srv/stable/common/mysite.com/ORM/class.User.php:587
[0x00007fff23619a00] getIsHidden() /srv/stable/common/mysite.com/class.User.php:42
[0x00007fff2361a470] getName() /local/www/stable/www/catalogue.php:41
同時,在 error.log 中保存瞭如下記錄:
Sep 21 16:22:19.399031 [WARNING] fpm_request_check_timed_out(), line 135: child 29715, script '/local/www/stable/www/catalogue.php' (pool default) executing too slow (5.018002 sec), logging
正如你再例子中看到的,腳本運行了 5 秒以上,並很可能是由於 mysql 響應慢造成的(top backtrace)。