目錄
1。選擇正確的MPM(多處理模塊)
2。優化野生設置
3。調音MPM事件設置(對於事件MPM)
4。使用mod_deflate啟用壓縮
5。槓桿緩存
6。優化磁盤I/O和文件處理
7.限制要求開銷
8。禁用不需要的模塊
9。使用反向代理進行動態內容
10。監視器和基準測試
首頁 運維 Apache Apache性能調整最佳實踐

Apache性能調整最佳實踐

Aug 05, 2025 am 06:59 AM
java 程式設計

使用事件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堅固且靈活,但默認設置通常是保守的,並且不適合生產工作負載。以下是提高Apache性能的關鍵最佳實踐。

Apache性能調整最佳實踐

1。選擇正確的MPM(多處理模塊)

MPM確定Apache如何處理傳入請求。根據您的工作量和硬件選擇正確的一個至關重要。

  • Prefork :最適合與非線程安全庫的兼容性(例如,通過mod_php較舊的PHP)。使用多個過程;每個處理一個請求。高內存使用量,但穩定。
  • 工人:使用過程和線程的混合。比預叉更高。適度流量。
  • 事件:最適合高急流場景。通過釋放線程,可以有效地有效地處理距離連接。推薦使用HTTP Keep-Alive和SSL的現代設置。

推薦

Apache性能調整最佳實踐
  • 如果您要使用靜態內容或通過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連接進行多個請求,從而減少了連接開銷。

Apache性能調整最佳實踐

關鍵指令

保持式
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_cachemod_cache_diskmod_file_cache來緩存靜態內容。

基本磁盤緩存示例:

 <ifModule mod_cache.c>
    可緩存磁盤 /
    cacheroot/var/cache/apache2/mod_cache
    CachedefaultExpire 3600
    Cachemaxexpire 86400
</ifModule>

對於動態內容,請考慮諸如Varnish之類的反向代理或將mod_cacheCacheIgnoreHeaders一起使用。

或者,通過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自動索引狀態信息替代

僅保留必要的內容: rewritessldeflateheaders頭等。


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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

PHP教程
1596
276
Java的僵局是什麼,您如何防止它? Java的僵局是什麼,您如何防止它? Aug 23, 2025 pm 12:55 PM

AdeadlockinJavaoccurswhentwoormorethreadsareblockedforever,eachwaitingforaresourceheldbytheother,typicallyduetocircularwaitcausedbyinconsistentlockordering;thiscanbepreventedbybreakingoneofthefournecessaryconditions—mutualexclusion,holdandwait,nopree

您目前尚未使用附上的顯示器[固定] 您目前尚未使用附上的顯示器[固定] Aug 19, 2025 am 12:12 AM

Ifyousee"YouarenotusingadisplayattachedtoanNVIDIAGPU,"ensureyourmonitorisconnectedtotheNVIDIAGPUport,configuredisplaysettingsinNVIDIAControlPanel,updatedriversusingDDUandcleaninstall,andsettheprimaryGPUtodiscreteinBIOS/UEFI.Restartaftereach

如何在Java中使用可選的? 如何在Java中使用可選的? Aug 22, 2025 am 10:27 AM

useoptional.empty(),可選of(),andoptional.ofnullable()

用於安全編碼的Java加密體系結構(JCA) 用於安全編碼的Java加密體系結構(JCA) Aug 23, 2025 pm 01:20 PM

理解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,並及時清除敏

使用Micronaut構建雲原生爪哇應用 使用Micronaut構建雲原生爪哇應用 Aug 20, 2025 am 01:53 AM

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

Java持續使用彈簧數據JPA和Hibernate Java持續使用彈簧數據JPA和Hibernate Aug 22, 2025 am 07:52 AM

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

修復:Windows顯示'客戶不持有所需的特權” 修復:Windows顯示'客戶不持有所需的特權” Aug 20, 2025 pm 12:02 PM

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

如何在Java中使用模式和匹配器類? 如何在Java中使用模式和匹配器類? Aug 22, 2025 am 09:57 AM

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

See all articles