前言:乘着這次空閑,來記錄下關於PHP和PHP-FPM配置文件的優化,也方便以后自己復習。
先說PHP的
1、PHP腳本執行時間
max_execution_time = 30
該選項設定PHP程序的最大執行時間,如果一個PHP腳本被請求,且該PHP腳本在max_execution_time時間內沒能執行完畢,則PHP不再繼續執行,直接給客戶端返回超時錯誤。沒有特殊需要該選項可保持默認設置30秒,如果您的PHP腳本確實需要長執行時間則可以適當增大該時間設置。
2、PHP腳本處理內存占用
memory_limit = 8M
該選項指定PHP腳本處理所能占用的最大內存,默認為8MB,如果您的服務器內存為1GB以上,則該選項可以設置為12MB以獲得更快的PHP腳本處理效率。
3、PHP上傳文件大小限制
upload_max_filesize = 2M
max_file_uploads = 3
該選項設定PHP所能允許最大上傳文件大小,默認為2MB。根據實際應用需求,可以適當增大該設置,max_file_uploads表示單次請求最多只能上傳 3 個文件
4、會話處理
session.save_handler = 'memcached' // 存放方式
session.save_path = '127.0.0.1:11211' // 存放路徑
該選項用於配置會話的存儲方式和存放路徑,默認是file文件方式,默認方式會拖慢大型應用,因為這個處理程序會把會話數據存儲在硬盤中,需要創建不必要的磁盤 I/O,浪費時間。
以上就是一些常見的優化和配置了
再說下PHP-FPM的
說之前,我們先了解下什么是PHP-FPM。PHP-FPM(FastCGI Process Manager:FastCGI進程管理器)是一個PHP-FastCGI管理器。那么PHP-FastCGI又是什么呢?
FastCGI是一個可伸縮地、高速地在HTTP服務器和動態腳本語言間通信的接口(FastCGI接口在Linux下是socket(可以是文件socket,也可以是ip socket)),主要優點是把動態語言和HTTP服務器分離開來。多數流行的HTTP服務器都支持FastCGI,包括Apache、Nginx和lightpd。
好了,這2個大概是了解了,下面說下PHP-FPM的配置
1、進程數
pm = static // 使用方式;還有一個dynamic(動態)
關於選擇靜態還是動態
2、最大處理請求數
pm.max_requests = 10240
既然說到了PHP-FPM了,那就簡單介紹下 php-fpm的高CPU使用率排查方法
[root@b28-12 log]# grep -v "^$" www.log.slow.tmp | cut -d " " -f 3,2 | sort | uniq -c | sort -k1,1nr | head -n 50
5181 run() /www/test.net/framework/web/filters/CFilter.php:41
5156 filter() /www/test.net/framework/web/filters/CFilterChain.php:131
2670 = /www/test.net/index.php
2636 run() /www/test.net/application/controllers/survey/index.php:665
2630 action() /www/test.net/application/controllers/survey/index.php:18
2625 run() /www/test.net/framework/web/actions/CAction.php:75
2605 runWithParams() /www/test.net/framework/web/CController.php:309
2604 runAction() /www/test.net/framework/web/filters/CFilterChain.php:134
2538 run() /www/test.net/framework/web/CController.php:292
2484 runActionWithFilters() /www/test.net/framework/web/CController.php:266
2251 run() /www/test.net/framework/web/CWebApplication.php:276
1799 translate() /www/test.net/application/libraries/Limesurvey_lang.php:118
1786 load_tables() /www/test.net/application/third_party/php-gettext/gettext.php:254
1447 runController() /www/test.net/framework/web/CWebApplication.php:135
uniq -c: 顯示唯一的行,並在每行行首加上本行在文件中出現的次數
sort -k1,1nr: 按照第一個字段,數值排序,且為逆序
head -10: 取前10行數據
