php fpm www.conf,PHP7中php.ini、php-fpm和www.conf 配置

PHP7中php.ini、php-fpm和www.conf 配置

php.ini是php運行核心配置文件,下面是一些常用配置

extension_dir=""

● 設置PHP的擴展庫路徑

expose_php = Off

● 避免PHP信息暴露在http頭中

display_errors = Off

● 避免暴露php調用mysql的錯誤信息

log_errors = On

● 在關閉display_errors后開啟PHP錯誤日志(路徑在php-fpm.conf中配置)

zend_extension=opcache.so extension=mysqli.so extension=pdo_mysql.so

● 設置PHP的opcache和mysql動態庫

date.timezone = PRC

● 設置PHP的時區

opcache.enable=1

● 開啟opcache

open_basedir = /usr/share/nginx/html;

● 設置PHP腳本允許訪問的目錄(需要根據實際情況配置)

php-fpm.conf是php-fpm進程服務的配置文件,下面是一些常用配置

error_log = /usr/local/php/logs/php-fpm.log

● 設置錯誤日志的路徑

include=/usr/local/php7/etc/php-fpm.d/*.conf

● 引入www.conf文件中的配置(默認已設置)

php-fpm.conf 以及 www.conf的主要配置信息

pid = run/php-fpm.pid

● pid設置,默認在安裝目錄中的var/run/php-fpm.pid,建議開啟

error_log = log/php-fpm.log

● 錯誤日志,默認在安裝目錄中的var/log/php-fpm.log

log_level = notice

● 錯誤級別. 可用級別為: alert(必須立即處理), error(錯誤情況), warning(警告情況), notice(一般重要信息), debug(調試信息). 默認: notice.

emergency_restart_threshold = 60

emergency_restart_interval = 60s

● 表示在emergency_restart_interval所設值內出現SIGSEGV或者SIGBUS錯誤的php-cgi進程數如果超過 emergency_restart_threshold個,php-fpm就會優雅重啟。這兩個選項一般保持默認值。

process_control_timeout = 0

● 設置子進程接受主進程復用信號的超時時間. 可用單位: s(秒), m(分), h(小時), 或者 d(天) 默認單位: s(秒). 默認值: 0.

daemonize = yes

● 后臺執行fpm,默認值為yes,如果為了調試可以改為no。在FPM中,可以使用不同的設置來運行多個進程池。 這些設置可以針對每個進程池單獨設置。

listen = 127.0.0.1:9000

● 監聽端口,即nginx中php處理的地址,一般默認值即可。可用格式為: 'ip:port', 'port', '/path/to/unix/socket'. 每個進程池都需要設置.

listen.backlog = -1

● backlog數,-1表示無限制,由操作系統決定,此行注釋掉就行。

listen.allowed_clients = 127.0.0.1

● 允許訪問FastCGI進程的IP,設置any為不限制IP,如果要設置其他主機的nginx也能訪問這臺FPM進程,listen處要設置成本地可被訪問的IP。默認值是any。每個地址是用逗號分隔. 如果沒有設置或者為空,則允許任何服務器請求連接

listen.owner = www listen.group = www listen.mode = 0666

● unix socket設置選項,如果使用tcp方式訪問,這里注釋即可。

user = www group = www

● 啟動進程的帳戶和組

php-fpm 進程池優化方法

pm = dynamic

● 對于專用服務器,pm可以設置為static。

如何控制子進程,選項有static和dynamic。如果選擇static,則由pm.max_children指定固定的子進程數。如果選擇dynamic,則由下開參數決定:

pm.max_children

● 靜態方式下開啟的php-fpm進程數量,在動態方式下他限定php-fpm的最大進程數(這里要注意pm.max_spare_servers的值只能小于等于pm.max_children)

pm.start_servers

● 動態方式下的起始php-fpm進程數量。

pm.min_spare_servers

● 保證空閑進程數最小值,如果空閑進程小于此值,則創建新的子進程

pm.max_spare_servers

● 保證空閑進程數最大值,如果空閑進程大于此值,此進行清理

● 如果dm設置為static,那么其實只有pm.max_children這個參數生效。系統會開啟參數設置數量的php-fpm進程。php-fpm一個進程大概會占20m-40m的內存,所以他的數字大小的設置要根據你的物理內存的大小來設置,還要注意到其他的內存占用,如數據庫,系統進程等,來確定以上4個參數的設定值!

● 如果dm設置為dynamic,4個參數都生效。系統會在php-fpm運行開始時啟動pm.start_servers個php-fpm進程,然后根據系統的需求動態在pm.min_spare_servers和pm.max_spare_servers之間調整php-fpm進程數。參數要求pm.start_servers的值在pm.min_spare_servers和pm.max_spare_servers之間。

pm.max_requests = 1000

● 設置每個子進程重生之前服務的請求數.

● 最大處理請求數是指一個php-fpm的worker進程在處理多少個請求后就終止掉,master進程會重新respawn一個新的。

● 這個配置的主要目的是避免php解釋器或程序引用的第三方庫造成的內存泄露。

對于可能存在內存泄漏的第三方模塊來說是非常有用的. 如果設置為 '0' 則一直接受請求. 等同于 PHP_FCGI_MAX_REQUESTS 環境變量. 默認值: 0.

pm.status_path = /status

● FPM狀態頁面的網址. 如果沒有設置, 則無法訪問狀態頁面. 默認值: none. munin監控會使用到

ping.path = /ping

● FPM監控頁面的ping網址. 如果沒有設置, 則無法訪問ping頁面. 該頁面用于外部檢測FPM是否存活并且可以響應請求. 請注意必須以斜線開頭 (/)。

ping.response = pong

● 用于定義ping請求的返回相應. 返回為 HTTP 200 的 text/plain 格式文本. 默認值: pong.

request_terminate_timeout = 0

● 設置單個請求的超時中止時間. 該選項可能會對php.ini設置中的'max_execution_time'因為某些特殊原因沒有中止運行的腳本有用. 設置為 '0' 表示 'Off'.當經常出現502錯誤時可以嘗試更改此選項。

request_slowlog_timeout = 10s

● 當一個請求該設置的超時時間后,就會將對應的PHP調用堆棧信息完整寫入到慢日志中. 設置為 '0' 表示 'Off'

slowlog = log/$pool.log.slow

● 慢請求的記錄日志,配合request_slowlog_timeout使用

rlimit_files = 1024

● 設置文件打開描述符的rlimit限制. 默認值: 系統定義值默認可打開句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。

rlimit_core = 0

● 設置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整數. 默認值: 系統定義值.

chroot =

● 啟動時的Chroot目錄. 所定義的目錄需要是絕對路徑. 如果沒有設置, 則chroot不被使用.

chdir =

● 設置啟動目錄,啟動時會自動Chdir到該目錄. 所定義的目錄需要是絕對路徑. 默認值: 當前目錄,或者/目錄(chroot時)

catch_workers_output = yes

● 重定向運行過程中的stdout和stderr到主要的錯誤日志文件中. 如果沒有設置, stdout 和 stderr 將會根據FastCGI的規則被重定向到 /dev/null . 默認值: 空.`

clear_env = no

● 清理環境

variables_order

常見錯誤及解決辦法整理

請求的超時中止時間未設置

● request_terminate_timeout的值如果設置為0或者過長的時間,可能會引起PHP 腳本會一直執行下去。這樣,當所有的 php-cgi 進程都卡在 file_get_contents() 函數時,這臺 Nginx+PHP 的 WebServer 已經無法再處理新的 PHP 請求了,Nginx 將給用戶返回“502 Bad Gateway”。設置一個

PHP腳本最大執行時間是必要的,但是,治標不治本。例如改成 30s,如果發生 file_get_contents() 獲取網頁內容較慢的情況,這就意味著 150 個 php-cgi 進程,每秒鐘只能處理 5 個請求,WebServer 同樣很難避免"502 Bad Gateway"。解決辦法是request_terminate_timeout設置為10s或者一個合理的值,或者給file_get_contents加一個超時參數!

max_requests參數配置不當

● max_requests參數配置不當,可能會引起間歇性502錯誤:

pm.max_requests = 1000

● 設置每個子進程重生之前服務的請求數. 對于可能存在內存泄漏的第三方模塊來說是非常有用的. 如果設置為 '0' 則一直接受請求. 等同于 PHP_FCGI_MAX_REQUESTS 環境變量. 默認值: 0.

這段配置的意思是,當一個 PHP-CGI 進程處理的請求數累積到 500 個后,自動重啟該進程。

● 但是為什么要重啟進程呢?

● 一般在項目中,我們多多少少都會用到一些 PHP 的第三方庫,這些第三方庫經常存在內存泄漏問題,如果不定期重啟 PHP-CGI 進程,勢必造成內存使用量不斷增長。因此 PHP-FPM 作為 PHP-CGI 的管理器,提供了這么一項監控功能,對請求達到指定次數的 PHP-CGI 進程進行重啟,保證內存使用量不增長。

php-fpm的慢日志,debug及異常排查神器

● request_slowlog_timeout設置一個超時的參數,slowlog設置慢日志的存放位置,tail -f /var/log/www.slow.log即可看到執行過慢的php過程。

大家可以看到經常出現的網絡讀取超過、Mysql查詢過慢的問題,根據提示信息再排查問題就有很明確的方向了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/540981.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/540981.shtml
英文地址,請注明出處:http://en.pswp.cn/news/540981.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務器電流源泉ups電源的三大形式

還記得此前12306官網癱瘓,回家心切急于購票的我們只能感到無比心累。雙十一前夕,守在購物車邊準備瘋狂購物的剁手黨們,遇到一直呈現加載狀態的頁面,不得不感嘆想要做馬云背后的那個人也要大費周折。作為一個資深網民,不…

timer purge_Java Timer purge()方法與示例

timer purge計時器類purge()方法 (Timer Class purge() method) purge() method is available in java.util package. purge()方法在java.util包中可用。 purge() method is used to remove all canceled tasks from the task queue of this Timer. purge()方法用于從此Timer的…

大話Linux內核中鎖機制之原子操作、自旋鎖【轉】

轉自:http://blog.sina.com.cn/s/blog_6d7fa49b01014q7p.html 多人會問這樣的問題,Linux內核中提供了各式各樣的同步鎖機制到底有何作用?追根到底其實是由于操作系統中存在多進程對共享資源的并發訪問,從而引起了進程間的競態。這…

hashmap put方法_Java HashMap put()方法與示例

hashmap put方法HashMap類的put()方法 (HashMap Class put() method) put() method is available in java.util package. put()方法在java.util包中可用。 put() method is used to link the given value element with the given key element in this HashMap. put()方法用于在…

java中jdom,java – JDOM中的命名空間(默認)

我正在嘗試使用最新的JDOM包生成XML文檔.我遇到了根元素和命名空間的問題.我需要生成這個根元素:xmlns"http://www.energystar.gov/manageBldgs/req"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://www.…

java enummap_Java EnumMap get()方法與示例

java enummapEnumMap類的get()方法 (EnumMap Class get() method) get() method is available in java.util package. get()方法在java.util包中可用。 get() method is used to get the value mapped with the given key element (key_ele) otherwise it returns null when no…

java后臺json傳遞,后臺json傳遞

json除了可以用于前臺傳遞,還可用于后臺之間傳遞。它可以傳遞List,Map,Bean等類型的數據。例如:User u1new User();u1.setUsername("zy");u1.setPassword("123");User u2new User();u2.setUsername("msl");u2.setPassword…

專家呼吁建安全漏洞信息共享機制并強化管控

近日,由中國網絡空間安全協會主辦,中國網絡空間安全協會網絡空間安全法律與公共政策專業委員會、北京郵電大學互聯網治理與法律研究中心、公安部第三研究所網絡安全法律研究中心、西安交通大學信息安全法律研究中心承辦的《網絡安全法(草案二…

java的equals方法_Java Date equals()方法與示例

java的equals方法日期類equals()方法 (Date Class equals() method) equals() method is available in java.util package. equals()方法在java.util包中可用。 equals() method is used to check whether this date and the given object (o) are equals or not. equals()方法…

lnmp解析php,LNMP之 php解析

[rootLNMP ~]# vim /usr/local/nginx/conf/nginx.conf打開以下PHP 相關項且更改 scripts$fastcgi_script_name;> /usrlocal/nginx/html$fastcgi_script_name;location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param…

spring歷史背景

1.2004年spring出現第一版本spring frameworl1.0 2.寫代碼永遠是最簡單的,后續的運維工作才是讓人感到無助的 3.spring boot在運維方面做了很多工作,部署,監控,度量。結合spring cloud還可以實現服務發現,服務降級等功…

計算機網絡中的傳輸協議是_計算機網絡中的傳輸方式

計算機網絡中的傳輸協議是傳輸方式 (Transmission Modes) The mechanism of transferring data or information between two linked devices connected over a network is referred to as Transmission Modes. 在通過網絡連接的兩個鏈接的設備之間傳輸數據或信息的機制稱為傳輸…

https 密鑰 php,https加密方式是什么

Https加密介紹Http直接通過明文在瀏覽器和服務器之間傳遞消息,容易被監聽抓取到通信內容。Https采用對稱加密和非對稱加密結合的方式來進行通信。Https不是應用層的新協議,而是Http通信接口用SSL和TLS來加強加密和認證機制。加密方式對稱加密&#xff1a…

一個前端框架應該有的一些公共函數

一、防止ie瀏覽器按backspace回退頁面 //防止后退返回頁面,如果非文本框、密碼框、文本域控件,或控件非可用裝填,則禁用后退按鍵 var uanavigator.userAgent.toLowerCase(); var isIEua.indexOf("msie")>-1; window.document.onkeydown fu…

Kruskal(P)和Prim(K)算法

最小生成樹 (Minimum Spanning Tree) An MST is a subset of the edges of the connected, undirected graph that connect all the vertices together, in which there is no forming of a cycle and there should be minimum possible total edge weight. MST是已連接的無向圖…

java get post 注解,GET/POST接收或發送數據的問題

在文章開始,先來回憶一下GET、POST這兩種請求方式的區別。?Http定義了與服務器交互的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,我們可以這樣認為&#xff…

mybatis中sql語句傳入多個參數方法

1 使用map <select id"selectRole" parameterType"map" resultType"RoleMap">SELECT id, roleName, noteFROM roleWHERE roleName LIKE Concat(%,#{roleName},%)and note like Concat(%,#{note},%)</select> 在接口中如下定義 List&…

kotlin半生對象_Kotlin程序| 隨播對象特征

kotlin半生對象伴侶對象 (Companion object) If you need a function or a property to be tied to a class rather than to instances of it (similar to static in java), you can declare it inside a companion object: 如果需要將函數或屬性綁定到類而不是實例(類似于java…

mysql安裝注意步驟,mysql安裝步驟

mysql安裝步驟1、在官網下載對應的壓縮文件&#xff0c;放到本地文件夾下&#xff0c;解壓縮。2、配置Path環境變量&#xff1a;新增mysql的bin文件夾路徑&#xff0c;C:\software\mysql-8.0.23-winx64\bin。3、在mysql根目錄下新增my.ini配置文件。內容如下&#xff0c;basedi…

maven插件介紹之tomcat7-maven-plugin

tomcat7-maven-plugin插件的pom.xml依賴為&#xff1a; <dependency><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version> </dependency>一&#xff1a;直接執行…