日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记

發布時間:2025/3/21 php 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.




二 配置MPM?

Apache 是模塊化的,因為可以輕松添加和移除特性。在Apache 的核心,多處理模塊(Multi-Processing Module,MPM )提供了這種模塊化功能性—— 管理網絡連接、調度請求。MPM 使您能夠使用線程,甚至能夠將Apache 遷移到另外一個操作系統。

每次只能有一個MPM 是活動的,必須使用 --with-mpm=(worker|prefork|event) 靜態編譯。

每個請求使用一個進程的傳統模型稱為 prefork 。較新的線程化模型稱為 ?worker,它使用多個進程,每個進程又有多個線程,這樣就能以較低的開銷獲得更好的性能。最新的 ?eventMPM 是一種實驗性的模型,為不同的任務使用單獨的線程池。要確定當前使用的是

哪種MPM ,可執行 httpd -l。例如:

[root@localhost conf]# httpd -l

Compiled in modules:

? core.c

? prefork.c

? http_core.c

? mod_so.c


選擇使用何種MPM 取決于許多因素。在event MPM 脫離實驗狀態之前,不應考慮這種模型,而是在使用線程和不使用線程之間作出

選擇。表面上看來,如果所有底層模塊(包括PHP 使用的所有庫)都是線程安全的,線程要優于分叉(forking)。

而Prefork 是較為安全的選擇;如果選擇了worker,則應該謹慎測試。性能收益還取決于您的發布版所附帶的庫及硬件無論選擇了哪種MPM ,都必須恰當地配置它。一般而言,配置MPM 包括告知Apache 怎樣去控制有多少worker 正在運行,它們是

線程還是進程。prefork MPM 的重要配置選項如清單1 所示。編輯http.conf 主配置文件可以看到:


StartServers 50 ? ? #預先啟動進程

MinSpareServers 15 ?#最小空閑進程

MaxSpareServers 30 ?#最大空閑進程

MaxClients 225 ? ? ?#允許連接數

MaxRequestsPerChild 4000


prefork 模型會為每個請求創建一個新進程。多余的進程保持空閑,以

處理傳入的請求,這縮短了啟動延遲。只要Web 服務器出現,預先完

成的配置就會立即啟動50 個進程,并盡力保持10 到20 個空閑服務器

運行。進程數的硬性限制由 MaxClients 指定。盡管一個進程能夠處

理許多相繼的請求,Apache 還是會取消連接數超過4,000 以后的進

程,這降低了內存泄漏的風險。

配置線程化MPM 與之類似,不同之處只是必須確定使用多少線程和進

程。Apache 文檔解釋了所有必要的參數和計算。


prefork 模型會為每個請求創建一個新進程。多余的進程保持空閑,以

處理傳入的請求,這縮短了啟動延遲。只要Web 服務器出現,預先完

成的配置就會立即啟動50 個進程,并盡力保持10 到20 個空閑服務器

運行。進程數的硬性限制由 MaxClients 指定。盡管一個進程能夠處

理許多相繼的請求,Apache 還是會取消連接數超過4,000 以后的進

程,這降低了內存泄漏的風險


配置線程化MPM 與之類似,不同之處只是必須確定使用多少線程和進

程。Apache 文檔解釋了所有必要的參數和計算。要經過幾次嘗試和出錯之后才能選好要使用的值。最重要的值是MaxClients。目標在于允許足夠多的workder 進程或線程運行,同時又不會導致服務器進行過度的交換。如果傳入的請求超出處理能力,那么至少滿足此值的那些請求會得到服務,其他請求被阻塞。



如果 MaxClients 過高,那么所有客戶機都將體驗到糟糕的服務,因為Web 服務器會試圖換出一個進程,以使另一個進程能夠運行。而設得過低意味著可能會不必要地拒絕服務。查看高負載下運行的進程數量和所有Apache 進程所導致的內存占用情況對設置這個值很有幫助。如果 MaxClients 的值超過256,必須將 ServerLimit 也設為同樣的數值。



Apache 處理的每個請求都要履行一套復雜的規則,這些規則指明了Web 服務器必須遵循的約束或特殊指令。對文件夾的訪問可能按

IP 地址約束為某個特定文件夾,也可配置用戶名和密碼。這些選項還包含處理特定文件,例如,如果提供了一個目錄列表,該如何處

理的文件,或輸出結果是否應壓縮。

這些配置以httpd.conf 中容器的形式出現,例如<Directory>,以便指定所用配置引用的是磁盤上的一個位置;再如<Location>,表

示引用是URL 中的路徑。清單2 展示了一個實際的Directory 容器。



php.ini

PHP 的配置是在php.ini 中完成的。四個重要的設置控制PHP 可使用多少系統資源,如表1 所列。

表1. php.ini 中與資源相關的設置

設置 描述 建議值

max_execution_time 一個腳本可使用多少CPU 秒 30

max_input_time 一個腳本等待輸入數據的時間有多長(秒) 60

memory_limit 在被取消之前,一個腳本可使用多少內存(字節) 32M

output_buffering 數據發送給客戶機之前,有多少數據(字節)需要緩存 4096

具體數字主要取決于您的應用程序。如果要從用戶處接收大文件,那么 max_input_time 可能必須增加,可以在php.ini 中修改,也

可以通過代碼重寫它。與之類似,CPU 或內存占用較多的程序也可能需要更大的設置值。目標就是緩解超標程序的影響,因此不建

議全局禁用這些設置。關于 max_execution_time,還有一點需要注意:它表示進程的CPU 時間,而不是絕對時間。因此一個進

行大量I/O 和少量計算的程序的運行時間可能遠遠超過 max_execution_time。這也是 max_input_time 可以大于

max_execution_time 的原因所在。

PHP 可執行的日志記錄數是可配置的。在生產環境中,禁用除最重要的日志以外的一切日志記錄能夠減少磁盤寫操作。如果需要使用

日志來排除問題,那么可以按需啟用日志記錄。error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR 將啟用足夠

的日志記錄,使您發現問題,同時從腳本中消除大量無用的內容。

回頁首


轉載于:https://blog.51cto.com/rex9527/1557401

總結

以上是生活随笔為你收集整理的LAMP 系统性能调优:第2 部分: 优化Apache 和PHP-学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。