當前位置:首頁 » 編程語言 » phpfpm優化

phpfpm優化

發布時間: 2022-06-02 02:08:25

❶ 關於php文件上傳速度太慢,有什麼優化的方法

加大帶寬或者去網吧上傳 不然就是FTP空間限速

❷ 用Netty作http靜態資源伺服器,類似Nginx這樣的,大一點的文件響應不正常怎麼回事

為什麼Nginx的性能要比Apache高得多?

????這得益於Nginx使用了最新的epoll(linux?2.6內核)和kqueue(freebsd)網路I/O模型,而Apache則使用的是傳統的select模型。目前Linux下能夠承受高並發訪問的Squid、Memcached都採用的是epoll網路I/O模型。
處理大量的連接的讀寫,Apache所採用的select網路I/O模型非常低效。下面用一個比喻來解析Apache採用的select模型和Nginx採用的epoll模型進行之間的區別:
假設你在大學讀書,住的宿舍樓有很多間房間,你的朋友要來找你。select版宿管大媽就會帶著你的朋友挨個房間去找,直到找到你為止。而epoll版宿管大媽會先記下每位同學的房間號,你的朋友來時,只需告訴你的朋友你住在哪個房間即可,不用親自帶著你的朋友滿大樓找人。如果來了10000個人,都要找自己住這棟樓的同學時,select版和epoll版宿管大媽,誰的效率更高,不言自明。同理,在高並發伺服器中,輪詢I/O是最耗時間的操作之一,select和epoll的性能誰的性能更高,同樣十分明了。為什麼會出現502錯誤呢?
nginx出現502有很多原因,但大部分原因可以歸結為資源數量不夠用,也就是說後端php-fpm處理有問題,nginx將正確的客戶端請求發給了後端的php-fpm進程,但是因為php-fpm進程的問題導致不能正確解析php代碼,最終返回給了客戶端502錯誤。優化php-fpm,優化代碼,加大內存才是解決502的根源。10000並發的話,nginx的表現怎麼樣?
2009年9月3日下午2:30,金山游戲《劍俠情緣網路版叄》臨時維護1小時,大量玩家上官網,論壇、評論、客服等動態應用Nginx伺服器集群,每台伺服器的Nginx活動連接數達到2.8萬。

❸ php-fpm的特色功能

所有這些特性都是「不打斷」的方式實現的。也就是說,如果你不使用它們,它們的存在不會影響php的功能性——他們都是「透明」的。
Error header
范圍:php.ini 選項
分類:便利性
默認情況下,如果被訪問的php腳本包含語法錯誤,用戶會收到一個空的「200 ok」頁。這是不方便的。Error header 這個php.ini 選項允許在這種情況下產生一個 HTTP錯誤碼,比如「HTTP/1.0 550 Server Made Big Boo」,從而中斷web server請求並顯示一個正確的錯誤頁。
如果要實現這樣的功能,需要在php.ini 中添加一條fastcgi.error_header = HTTP/1.0 550 Server Made Big Boo
在php-5.2.4 中添加了類似,但不相同的功能:如果被訪問的php腳本包含語法錯誤,並且 display_errors = off,會立刻返回「HTTP/1.0 500 Internal Server Error」。
如果你需要設定一個 503錯誤,或者想要使這個行為獨立於 display_errors 的設置,那麼可以使用fastcgi.error_header。如果你在php-5.2.5 或以上版本上啟用 php-fpm,那麼fastcgi.error_header的優先順序更高。
優化的上傳支持
實質:web server 支持
類型:優化
這個特性正如名字那樣,可以加速對大 POST 請求的處理速度,包括文件上傳。優化是通過將請求體已寫入一個臨時文件,然後fastcgi協議傳遞文件名而不是請求體到來實現的。只有 nginx0.5.9 以上才支持這個功能。顯然,這種模式只在php和 web server 在一台機器上的時候才能用。
nginx 樣例配置:
location ~ .php$ {
fastcgi_pass_request_body off;
client_body_in_file_only clean;
fastcgi_param REQUEST_BODY_FILE $request_body_file;
...
fastcgi_pass ...;
}
在php中不需要配置任何東西。如果php收到了參數REQUEST_BODY_FILE,就讀取其中的請求體,如果沒有,就自行從fastcgi協議中讀取請求體。
結合這個特性,可以考慮對臨時文件使用內存文件系統,例如tmpfs(linux):
client_body_temp_path /dev/shm/client_body_temp;
fastcgi_finish_request()
范圍:php函數
類型:優化
這個特性可以提高一些php請求的處理速度。如果有些處理可以在頁面生成完後進行,就可以使用這種優化。比如,在 memcached 中保存 session 就可以在頁面交給 web server 後進行。fastcgi_finisth_request() ,這一特性可以結束響應輸出,web server 可以立即開始交給等不及的客戶端,而此刻,php可以在請求的上下文環境中處理許多事情。比如保存session,轉換上傳的視頻,處理統計等等。
fastcgi_finisth_request() 會觸發 shutdown 函數運行。
request_slowlog_timeout
范圍:php-fpm.conf 選項
分類: 方便
這個選項能讓你跟蹤執行緩慢的腳本並把他們連同調用棧一起記錄在日誌文件中。例如如下設置:
<value name=request_slowlog_timeout>5s</value>
<value name=slowlog>logs/slow.log</value>
正如你再例子中看到的,腳本運行了 5 秒以上,並很可能是由於 mysql 響應慢造成的(top backtrace)。

❹ php fpm配置優化 pm 怎麼配置

1、php-fpm優化參數介紹 他們分別是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。 pm:表示使用那種方式,有兩個值可以選擇,就是static(靜態)或者dynamic(動態)。 在更老一些的版本中,dynamic

❺ php-fpm子進程會自動重啟嗎

伺服器出現異常,網站不能正常訪問。經排查�php的問題。
在重啟php-fpm時,恢復正常。1分鍾之後又出現故障。查看php日誌文件/usr/local/php/var/log 後提示
WARNING: [pool www] server reached pm.max_children setting (5), consider raising it
子進程數已經達到設置的最大值。
要設置php進程數量。需要在php-fpm.conf文件中修改。
先看/usr/local/php/etc/php-fpm.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
#fpm監聽埠,即nginx中php處理的地址,一般默認值即可。可用格式為: 『ip:port』, 『port』, 『/path/to/unix/socket』. 每個進程池都需要設置.
listen.backlog = -1
#backlog數,-1表示無限制,由操作系統決定,此行注釋掉就行。backlog含義參考:
http://www.3gyou.cc/?p=41
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
#啟動進程的帳戶和組
pm = dynamic #對於專用伺服器,pm可以設置為static。
#如何控制子進程,選項有static和dynamic。如果選擇static,則由pm.max_children指定固定的子進程數。如果選擇dynamic,則由下開參數決定:
pm.max_children #,子進程最大數
pm.start_servers #,啟動時的進程數
pm.min_spare_servers #,保證空閑進程數最小值,如果空閑進程小於此值,則創建新的子進程
pm.max_spare_servers #,保證空閑進程數最大值,如果空閑進程大於此值,此進行清理
pm.max_requests = 1000
#設置每個子進程重生之前服務的請求數. 對於可能存在內存泄漏的第三方模塊來說是非常有用的. 如果設置為 』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 . 默認值: 空.
根據以上配置的解析,在php-fpm.conf文件中添加如下配置:
pm.max_children = 100
pm.start_servers = 30
pm.min_spare_servers = 20
pm.max_spare_servers = 100
以觀後效。
另附豆瓣技術貼:https://www.douban.com/note/315222037/
1、php-fpm優化參數介紹
他們分別是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。
pm:表示使用那種方式,有兩個值可以選擇,就是static(靜態)或者dynamic(動態)。
在更老一些的版本中,dynamic被稱作apache-like。這個要注意看配置文件的說明。
下面4個參數的意思分別為:
pm.max_children:靜態方式下開啟的php-fpm進程數量
pm.start_servers:動態方式下的起始php-fpm進程數量
pm.min_spare_servers:動態方式下的最小php-fpm進程數
pm.max_spare_servers:動態方式下的最大php-fpm進程數量
區別:
如果dm設置為 static,那麼其實只有pm.max_children這個參數生效。系統會開啟設置數量的php-fpm進程。
如果dm設置為 dynamic,那麼pm.max_children參數失效,後面3個參數生效。
系統會在php-fpm運行開始 的時候啟動pm.start_servers個php-fpm進程,
然後根據系統的需求動態在pm.min_spare_servers和pm.max_spare_servers之間調整php-fpm進程數
2、伺服器具體配置
對於我們的伺服器,選擇哪種執行方式比較好呢?事實上,跟Apache一樣,運行的PHP程序在執行完成後,或多或少會有內存泄露的問題。
這也是為什麼開始的時候一個php-fpm進程只佔用3M左右內存,運行一段時間後就會上升到20-30M的原因了。
對於內存大的伺服器(比如8G以上)來說,指定靜態的max_children實際上更為妥當,因為這樣不需要進行額外的進程數目控制,會提高效率。
因為頻繁開關php-fpm進程也會有時滯,所以內存夠大的情況下開靜態效果會更好。數量也可以根據 內存/30M 得到,比如8GB內存可以設置為100,
那麼php-fpm耗費的內存就能控制在 2G-3G的樣子。如果內存稍微小點,比如1G,那麼指定靜態的進程數量更加有利於伺服器的穩定。
這樣可以保證php-fpm只獲取夠用的內存,將不多的內存分配給其他應用去使用,會使系統的運行更加暢通。
對於小內存的伺服器來說,比如256M內存的VPS,即使按照一個20M的內存量來算,10個php-cgi進程就將耗掉200M內存,那系統的崩潰就應該很正常了。
因此應該盡量地控制php-fpm進程的數量,大體明確其他應用佔用的內存後,給它指定一個靜態的小數量,會讓系統更加平穩一些。或者使用動態方式,
因為動態方式會結束掉多餘的進程,可以回收釋放一些內存,所以推薦在內存較少的伺服器或VPS上使用。具體最大數量根據 內存/20M 得到。
比如說512M的VPS,建議pm.max_spare_servers設置為20。至於pm.min_spare_servers,則建議根據伺服器的負載情況來設置,比如伺服器上只是部署php環境的話,比較合適的值在5~10之間。
本伺服器配置
1、伺服器基本信息:
硬碟:數據盤30G、系統盤20G
內存:1.5G
CPU:雙核
系統:CentOS 6.3 64位
帶寬:獨享2M
2、部署的應用
Git、SVN、Apache、Tomcat、PHP、Nginx、mysql、JDK
3、優化後的參數
pm = dynamic
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8

❻ php中fastcgi和php-fpm是什麼東西

首先要明白CGI是一個協議,方便程序員開發程序的,
而fastcgi是cgi的一個改良版,優化了CGI的性能,
php-fpm是實現了fastcgi的一個程序(當然,被官方收錄了).
而php-fpm是php的一種工作模式。以服務的形式接收伺服器傳來的php文件,處理返回。
php一般還會以apache模塊的形式工作.

❼ php-fpm worker設置多少最佳

1、php-fpm優化參數介紹
他們分別是:pm、pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers。

pm:表示使用那種方式,有兩個值可以選擇,就是static(靜態)或者dynamic(動態)。
在更老一些的版本中,dynamic被稱作apache-like。這個要注意看配置文件的說明。

❽ windows怎麼安裝php-fpm 優化

php5與apache2.0配置方法 一.php的安裝與調試 由於php是一個zip文件(非install版),安裝較為簡單,解壓就行。把解壓的 php5.2.1-Win32重命名為 php5。 1 找到php目錄下的 php.ini-dist或 php.ini.recommended文件,重命名為 php.ini 並復制到系統盤的windows目錄下(以c:\windows為例). 2 再把php目錄下的php5ts.dll,libmysql.dll復制到目錄 c:\windows\system32下。 3 把php5\ext目錄下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件復制到c:\windows\system32下 如果沒有載入 php_gd2.dll php將不能處理圖像。沒有載入php_mysql.dll php將不支持mysql函數庫 php_mbstring.dll在後面使用phpmyadmin時支持寬字元。 4 打開c:\windows\php.ini文件(關聯到mysql) 設置擴展路徑 查找 extension_dir 有這么一行extension_dir = "./" 將此行改成 extension_dir = "C:\php5\ext" 其中C:\php5是你安裝php的路徑。路徑不正確將無法載入dll (注意:有些php版本是 ;extension_dir = "./" 要把前面的分號去掉) 查找 extension extension=php_mbstring.dll extension=php_gd2.dll extension=php_mysql.dll 把上面3項前面的分號去掉,這樣apache啟動時就可以載入這些dll了 當然前面我們也把這些dll復制到system32下了l php5時差問題 <?php echo date("Y-m-d H:i:s");?>時間相差八小時 為什麼呢?PHP5系列版本新增了時區設置,默認為格林威治時間,與中國所在的東8區正好相差8個小時 查找date.timezone有這么一行 ;date.timezone = 將;去掉,改成 date.timezone = PRC 二:在httpd.conf的最後一行寫下 LoadMole php5_mole D:/php5/php5apache2.dll PHPIniDir "C:/WINDOWS" AddType application/x-httpd-php .php AddType application/x-httpd-php .html AddType application/x-httpd-php .htm Alias /aa "D:/aa/" <Directory "D:/aa"> Options Indexes MultiViews AllowOverride none Order allow,deny

❾ php-fpm導致CPU佔用率100%

各個地方打個日誌,判斷下是哪個地方慢了,然後才能進行優化。根據以往的經驗是表中的數據量太大,讀取太慢導致的,此時加個索引能解決

熱點內容
超父演算法 發布:2025-02-10 08:43:05 瀏覽:910
電腦主機配置需要哪些硬體 發布:2025-02-10 08:22:52 瀏覽:706
平板太卡換存儲卡有用嗎 發布:2025-02-10 08:14:16 瀏覽:828
台北伺服器搭建 發布:2025-02-10 08:13:33 瀏覽:273
webconfig資料庫的連接配置 發布:2025-02-10 08:13:24 瀏覽:966
dell伺服器背板什麼意思 發布:2025-02-10 08:11:08 瀏覽:100
桑塔納全秀和半袖哪個配置高 發布:2025-02-10 07:55:42 瀏覽:350
手紋演算法 發布:2025-02-10 07:52:27 瀏覽:39
愛奇藝怎麼看賬號密碼 發布:2025-02-10 07:51:43 瀏覽:352
破解訪問許可權 發布:2025-02-10 07:17:24 瀏覽:664