1. 程式人生 > >Laravel佔用過多的php-fpm解決方式

Laravel佔用過多的php-fpm解決方式

近日發現所做的網站有一個php-fpm程序超多,經常卡死。。。細究原因。。發現報的這個錯誤:

[21-Mar-2018 14:46:57]  [pool www] pid 5897
script_filename = /home/htdocs/wkds/public/index.php
[0x00002b317d03e800] getRealPath() /home/htdocs/wkds/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php:47
[0x00007fff7f72a910] accept() unknown:0
[0x00007fff7f72ae70] next() unknown:0
[0x00007fff7f72b3e0] next() unknown:0
[0x00002b317d03e478] gc() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Session/FileSessionHandler.php:105
[0x00002b317d03e0c8] gc() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:152
[0x00002b317d03de58] collectGarbage() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:70
[0x00007fff7f72c870] handle() unknown:0
[0x00002b317d03dad8] call_user_func_array() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:136
[0x00007fff7f72d1c0] Illuminate\Pipeline\{closure}() unknown:0
[0x00002b317d03d640] call_user_func() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:32
[0x00002b317d03d350] Illuminate\Routing\{closure}() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37
[0x00007fff7f72e060] handle() unknown:0
[0x00002b317d03d0d0] call_user_func_array() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:136
[0x00007fff7f72e9b0] Illuminate\Pipeline\{closure}() unknown:0
[0x00002b317d03cc38] call_user_func() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php:32
[0x00002b317d03c928] Illuminate\Routing\{closure}() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:59
[0x00007fff7f72f850] handle() unknown:0
[0x00002b317d03c768] call_user_func_array() /home/htdocs/wkds/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:136
[0x00007fff7f7301a0] Illuminate\Pipeline\{closure}() unknown:0

大概意思就是尋找session檔案耗費的時間太長導致報錯。。(.env檔案裡session的儲存方式設定的是file)

於是,開啟config/session.php發現session的存續時長設定的太長了,再加上網站訪問人數太多,發生了這個錯誤。。

    'lifetime' => 600,

    'expire_on_close' => false,

這裡把expire_on_close設定為true,意味著使用者關閉瀏覽器時自動刪除session,或者把存續時間lifetime設定的短一點。

接下來,我們進入storage\freamework\sessions資料夾,把裡面那個一條一條session記錄的檔案刪除,就可以了(切記不能刪除sessions資料夾,只能刪除裡面的檔案,否則會造成寫錯誤)。