Apache性能調整最佳實踐
使用事件MPM用於高電平工作負載,尤其是使用PHP-FPM,或者僅在非螺紋安全模塊需要的情況下,僅使用Prefork。 2。啟用KeepAlive,將MaxKeepAlivereQuests設置為100,並且在2-5秒之間進行keepaliveTime之外,以平衡連接重用和資源使用情況。 3。根據可用的RAM和流量,配置事件MPM設置,例如開始者,MinsParethReads,MaxRequestWorkers和MaxConnectPerchild,確保MaxRequestWorkers = MaxRequestWorkers =總RAM /平均Apache過程大小。 4。啟用mod_deflate可以壓縮基於文本的內容,例如HTML,CSS和JavaScript,避免對已經壓縮的文件(如圖像)進行壓縮。 5。使用mod_cache_disk實現靜態內容和mod_expires瀏覽器緩存的緩存,並具有圖像,CSS和JavaScript的到期規則。 6。啟用sendfile和可選的enableMmap,可以通過內核級傳輸和內存映射提高文件服務性能。 7.設置超時,限制賽場,限制列出菲爾德賽和限制限制機體,以防止濫用並降低DOS風險。 8。禁用未使用的模塊,例如自動索引,狀態和信息,以減少內存和CPU開銷。 9。使用諸如Nginx或Varnish之類的反向代理,或通過MOD_PROXY_FCGI與PHP-FPM配置Apache,以分離靜態和動態內容處理。 10。使用AB,HTOP,MOD_STATUS和LOGS監視性能,並迭代更改以匹配工作負載,內容類型和硬件功能,並具有事件MPM,壓縮,緩存和適當的工作人員調整,可提供最重要的改進。
Apache性能調整對於有效地處理高流量,減少延遲並最佳使用服務器資源至關重要。儘管Apache堅固且靈活,但默認設置通常是保守的,並且不適合生產工作負載。以下是提高Apache性能的關鍵最佳實踐。

1。選擇正確的MPM(多處理模塊)
MPM確定Apache如何處理傳入請求。根據您的工作量和硬件選擇正確的一個至關重要。
- Prefork :最適合與非線程安全庫的兼容性(例如,通過mod_php較舊的PHP)。使用多個過程;每個處理一個請求。高內存使用量,但穩定。
- 工人:使用過程和線程的混合。比預叉更高。適度流量。
- 事件:最適合高急流場景。通過釋放線程,可以有效地有效地處理距離連接。推薦使用HTTP Keep-Alive和SSL的現代設置。
推薦:

- 如果您要使用靜態內容或通過PHP-FPM使用PHP,請使用事件MPM 。
- 僅在
mod_php
等模塊的需要時才使用預叉。
切換MPM(在Debian/Ubuntu上):
sudo a2dismod mpm_prefork sudo a2enmod mpm_event sudo systemctl restart apache2
2。優化野生設置
Keep-Alive允許通過單個TCP連接進行多個請求,從而減少了連接開銷。

關鍵指令:
保持式 Maxkeepaliverequests 100 keepalivetimeout 5
- keepalive on :啟用持久連接。
- MaxKeepAlivereQuests :每個連接的最大請求(100是合理的)。
- keepaliveTimeOut :Apache等待下一個請求多長時間(較少的內存使用)。
權衡:超時會保持空閒連接開放,消耗服務器資源。對於高流量站點,請考慮將KeepAliveTimeout
降低到2-5秒。
3。調音MPM事件設置(對於事件MPM)
微調事件MPM以匹配您的服務器容量。
示例配置( /etc/apache2/mods-available/mpm_event.conf
):
<ifModule mpm_event_module> Stuntervers 3 Minsparethreads 75 Maxsparethreads 250 線程限制64 Threadsperchild 25 Maxrequestworkers 400 MaxConnectionsPerchild 10000 </ifModule>
解釋:
- MaxrequestWorkers :最大並發請求(例如,400 = 16個進程×每個線程)。
- MaxConnectionsPerchild :在服務多個請求後通過回收過程限制內存洩漏。
經驗法則:基於可用的RAM設置MaxRequestWorkers
:
Maxrequestworkers =總RAM /平均Apache過程大小
使用ps aux | grep apache
估計過程大小。
4。使用mod_deflate啟用壓縮
通過壓縮響應來減少帶寬並改善頁面加載時間。
啟用和配置:
<ifModule mod_deflate.c> AddoutputFilterByType Deflate Text/Plain AddoutputFilterByType Deflate Text/html AddoutputFilterByType Deflate Text/XML AddoutputFilterByType Deflate Text/css AddoutputFilterByType Deflate應用程序/XML AddoutputfipFilterByType Deflate應用程序/XHTML XML AddoutputFilterByType Deflate應用程序/JavaScript AddoutputFilterByType Deflate應用程序/X-JavaScript </ifModule>
注意:避免壓縮已經壓縮的文件(例如,圖像,pdfs)。
5。槓桿緩存
使用mod_cache
, mod_cache_disk
或mod_file_cache
來緩存靜態內容。
基本磁盤緩存示例:
<ifModule mod_cache.c> 可緩存磁盤 / cacheroot/var/cache/apache2/mod_cache CachedefaultExpire 3600 Cachemaxexpire 86400 </ifModule>
對於動態內容,請考慮諸如Varnish之類的反向代理或將mod_cache
與CacheIgnoreHeaders
一起使用。
或者,通過mod_expires
使用瀏覽器緩存:
<ifModule mod_expires.c> 到期 ExpiresbyType圖像/JPG“訪問加1年” ExpiresbyType文本/CSS“訪問加1個月” ExpiresbyType應用程序/JavaScript“訪問加1個月” </ifModule>
6。優化磁盤I/O和文件處理
啟用sendfile :
啟用EndablesEndFile
將內核級文件傳輸用於靜態內容 - 速度和較少的CPU密集型。
使用內存映射(可選) :
enablemmap打開
將文件映射到內存中以更快地訪問(在內存約束系統上謹慎使用)。
7.限制要求開銷
通過限制請求大小和超時來加強安全性和性能。
超時30 極限Requestfields 100 Limit Requestfieldsize 8190 LimitRequestbody 10485760
- 防止大型標頭或有效載荷濫用。
- 降低了DOS攻擊的風險。
8。禁用不需要的模塊
每個加載的模塊都會消耗內存和CPU。
禁用未使用的模塊:
sudo a2dismod自動索引狀態信息替代
僅保留必要的內容: rewrite
, ssl
, deflate
, headers
頭等。
9。使用反向代理進行動態內容
將靜態內容卸載到NGINX或在諸如Varnish或nginx之類的反向代理後面使用Apache。
或者,使用PHP-FPM運行Apache:
- Apache處理靜態文件。
- PHP-FPM通過
mod_proxy_fcgi
管理PHP請求。
此設置提高了並發和穩定性。
10。監視器和基準測試
使用工具來驗證調整:
- AB(Apache台) :
ab -n 1000 -c 100 https://yoursite.com/
- HTOP,PS,免費:監視內存和CPU。
- mod_status :啟用實時見解的服務器狀態。
定期檢查錯誤和訪問日誌中的瓶頸。
調整Apache並不是萬能的。從保守的變化,監視影響和迭代開始。事件MPM,適當的工人限制,壓縮和緩存通常會帶來最大的收益。基本上,將配置匹配到您的內容類型,流量模式和硬件。
以上是Apache性能調整最佳實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

AdeadlockinJavaoccurswhentwoormorethreadsareblockedforever,eachwaitingforaresourceheldbytheother,typicallyduetocircularwaitcausedbyinconsistentlockordering;thiscanbepreventedbybreakingoneofthefournecessaryconditions—mutualexclusion,holdandwait,nopree
![您目前尚未使用附上的顯示器[固定]](https://img.php.cn/upload/article/001/431/639/175553352135306.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
Ifyousee"YouarenotusingadisplayattachedtoanNVIDIAGPU,"ensureyourmonitorisconnectedtotheNVIDIAGPUport,configuredisplaysettingsinNVIDIAControlPanel,updatedriversusingDDUandcleaninstall,andsettheprimaryGPUtodiscreteinBIOS/UEFI.Restartaftereach

理解JCA核心組件如MessageDigest、Cipher、KeyGenerator、SecureRandom、Signature、KeyStore等,它們通過提供者機制實現算法;2.使用SHA-256/SHA-512、AES(256位密鑰,GCM模式)、RSA(2048位以上)和SecureRandom等強算法與參數;3.避免硬編碼密鑰,使用KeyStore管理密鑰,並通過PBKDF2等安全派生密碼生成密鑰;4.禁用ECB模式,採用GCM等認證加密模式,每次加密使用唯一隨機IV,並及時清除敏

Micronautisidealforbuildingcloud-nativeJavaapplicationsduetoitslowmemoryfootprint,faststartuptimes,andcompile-timedependencyinjection,makingitsuperiortotraditionalframeworkslikeSpringBootformicroservices,containers,andserverlessenvironments.1.Microna

SpringDataJPA與Hibernate協同工作的核心是:1.JPA為規範,Hibernate為實現,SpringDataJPA封裝簡化DAO開發;2.實體類通過@Entity、@Id、@Column等註解映射數據庫結構;3.Repository接口繼承JpaRepository可自動實現CRUD及命名查詢方法;4.複雜查詢使用@Query註解支持JPQL或原生SQL;5.SpringBoot中通過添加starter依賴並配置數據源、JPA屬性完成集成;6.事務由@Transactiona

runtheapplicationorcommandasadministratorByright-clickingandSelecting“ runasAdministrator” toensureeleeleeleeleviledprivilegesareAreDranted.2.checkuseracccountcontontrol(uac)uac)

Pattern類用於編譯正則表達式,Matcher類用於在字符串上執行匹配操作,二者結合可實現文本搜索、匹配和替換;首先通過Pattern.compile()創建模式對象,再調用其matcher()方法生成Matcher實例,接著使用matches()判斷全字符串匹配、find()查找子序列、replaceAll()或replaceFirst()進行替換,若正則包含捕獲組,可通過group(n)獲取第n組內容,實際應用中應避免重複編譯模式、注意特殊字符轉義並根據需要使用匹配模式標誌,最終實現高效
