溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux下如何解決因php-cgi占內存100%導致的電腦很卡

發布時間:2021-04-09 17:05:31 來源:億速云 閱讀:218 作者:啵贊 欄目:系統運維

本篇內容介紹了“Linux下如何解決因php-cgi占內存100%導致的電腦很卡”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

  網站日志目錄/home/hosts_log

  日志文件有對應的網站id

  php-cgi日志目錄 /usr/local/php_fcgi/logs

  php-fpm.log

  slow.log

  查看日志文件基本上就可以解決問題了,網站被入侵上傳了一個php ddos文件,當然如果不是此問題可以如下查看是不是程序問題有時使用file_get_contents函數也可能導致cpu 100%。

  在php.ini 中,有一個參數 max_execution_time 可以設置PHP 腳本的最大執行時間,但是,在 php-cgi(php-fpm)中,該參數不會起效。真正能夠控制PHP 腳本最大執行時間的是php-fpm.conf 配置文件中的以下參數:

  The timeout (in seconds) for serving a single request after which the worker process will be terminated

  Should be used when ‘max_execution_time’ ini option does not stop script execution for some reason

  ‘0s’ means ‘off’

  《value name=“request_terminate_timeout”》0s《/value》

  默認值為0秒,也就是說,PHP 腳本會一直執行下去。這樣,當所有的php-cgi 進程都卡在file_get_contents()函數時,這臺Nginx+PHP 的WebServer已經無法再處理新的PHP 請求了,Nginx 將給用戶返回“502 Bad Gateway”。修改該參數,設置一個PHP 腳本最大執行時間是必要的,但是,治標不治本。例如改成《value name=“request_terminate_timeout”》30s《/value》,如果發生file_get_contents()獲取網頁內容較慢的情況,這就意味著150 個php-cgi 進程,每秒鐘只能處理 5 個請求,WebServer同樣很難避免“502 Bad Gateway”。

  要做到徹底解決,只能改掉直接使用file_get_contents的習慣,而是稍微修改一下,加個超時時間,用以下方式來實現 HTTP GET 請求。要是覺得麻煩,可以自行將以下代碼封裝成一個函數。

  《?php

  $ctx = stream_context_create(array(

  ‘http’ =》 array(

  ‘timeout’ =》 1 //設置一個超時時間,單位為秒

 ?。?/p>

 ?。?/p>

 ?。?

  file_get_contents(“http://www.111cn.net/”, 0, $ctx);

 ???》

  當然如果像dedecms生成html頁面時cpu也會100%的情況。

“Linux下如何解決因php-cgi占內存100%導致的電腦很卡”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女