溫馨提示×

Ubuntu Apache如何提升并發處理能力

小樊
45
2025-09-21 15:17:28
欄目: 智能運維

1. 調整Apache MPM模塊配置
Apache的并發處理能力核心取決于**MPM(多處理模塊)**的選擇與配置。Ubuntu下需先禁用默認的mpm_prefork(適合靜態內容、線程不安全場景),啟用更高效的mpm_worker(多線程+進程混合模型)或mpm_event(事件驅動,優化長連接):

  • 禁用舊模塊/啟用新模塊
    sudo a2dismod mpm_prefork  # 關閉prefork
    sudo a2enmod mpm_worker    # 開啟worker(或mpm_event)
    sudo systemctl restart apache2
    
  • 配置mpm_worker參數(以150并發為例):
    編輯/etc/apache2/mods-enabled/mpm_worker.conf,調整以下參數:
    <IfModule mpm_worker_module>
        StartServers          2    # 啟動時的進程數
        MinSpareThreads      25    # 最小空閑線程數
        MaxSpareThreads      75    # 最大空閑線程數
        ThreadsPerChild      25    # 每個進程的線程數
        MaxRequestWorkers   150    # 最大并發請求數(=進程數×線程數)
        MaxConnectionsPerChild 0   # 每個進程處理的請求數(0=無限制)
    </IfModule>
    
    注:mpm_event配置類似,但更適合長連接(如WebSocket),可將MaxConnectionsPerChild設為非零值(如1000)以避免內存泄漏。

2. 優化系統資源限制
Apache的并發處理受限于系統的文件描述符TCP連接限制,需調整以下參數:

  • 增加文件描述符限制
    編輯/etc/security/limits.conf,添加:
    * soft nofile 65535
    * hard nofile 65535
    
    修改/etc/pam.d/login,添加:
    session required pam_limits.so
    
  • 優化內核TCP參數
    編輯/etc/sysctl.conf,添加:
    net.ipv4.tcp_tw_reuse = 1    # 復用TIME-WAIT狀態的連接
    net.core.somaxconn = 4096    # 增加監聽隊列長度
    
    生效配置:
    sudo sysctl -p
    

3. 啟用緩存與壓縮模塊
減少重復請求和傳輸數據量,提升并發處理效率:

  • 啟用緩存模塊(緩存靜態內容):
    sudo a2enmod cache cache_disk
    
    編輯/etc/apache2/mods-enabled/cache_disk.conf,配置緩存目錄:
    <IfModule mod_cache_disk.c>
        CacheRoot /var/cache/apache2/mod_cache_disk
        CacheEnable disk /
        CacheDirLevels 2
        CacheDirLength 1
    </IfModule>
    
  • 啟用壓縮模塊(減少傳輸體積):
    sudo a2enmod deflate expires
    
    編輯/etc/apache2/mods-enabled/deflate.conf,添加壓縮類型:
    <IfModule mod_deflate.c>
        AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
    </IfModule>
    

4. 調整KeepAlive參數
允許客戶端復用TCP連接,減少連接建立的開銷(適用于HTTP/1.1):
編輯Apache主配置文件(/etc/apache2/apache2.conf),添加:

KeepAlive On                   # 開啟KeepAlive
MaxKeepAliveRequests 100       # 單個連接最大請求數
KeepAliveTimeout 5             # 連接保持時間(秒)

5. 使用負載均衡與反向代理
通過分發請求到多個Apache實例,提升整體并發處理能力:

  • 安裝并啟用代理模塊
    sudo a2enmod proxy proxy_balancer lbmethod_byrequests
    
  • 配置負載均衡(編輯/etc/apache2/sites-available/balancer.conf):
    <Proxy balancer://mycluster>
        BalancerMember http://backend1.example.com loadfactor=3
        BalancerMember http://backend2.example.com loadfactor=1
    </Proxy>
    ProxyPass / balancer://mycluster/
    ProxyPassReverse / balancer://mycluster/
    

6. 監控與持續調優
使用工具監控性能,根據實際情況調整參數:

  • 實時監控htop(查看CPU/內存使用)、netstat -tulnp(查看連接狀態)、apachetop(查看請求速率)。
  • 壓力測試:使用ab(ApacheBench)模擬并發請求,評估優化效果:
    ab -n 1000 -c 100 http://your-server-ip/
    
    注:-n表示總請求數,-c表示并發數。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女