針對 SIP 5.5 在 600 併發用戶下,透過四大面向配置調整觀察效能表現:
基準環境:SIP 5.5、600 併發、ISP 預設 20ms、Apache 2.0.52、JBoss 4.2.1、Cache Client 2.4.2。
| Apache 配置 | JBoss 配置 | Cache 版本 | TPS | TPS 區間 |
|---|---|---|---|---|
| 無 | APR | 2.4.2 | 1705 | 1600-1900 |
| 無 | HTTP/1.1 | 2.4.2 | 1615 | 1550-1700 |
| mod_jk | HTTP/1.1 | 2.4.2 | 2090 | 1800-2800 |
| mod_jk | APR | 2.4.2 | 3223 | 3200-3400 |
發現:非 APR 模式下 TPS 波動極大、Socket 連接消耗巨大;APR 模式穩定且高吞吐。
| Apache 模組 | JBoss 配置 | Cache 版本 | TPS | TPS 區間 |
|---|---|---|---|---|
| 無 | APR | 2.4.2 | 1705 | 1600-1900 |
| mod_jk | APR | 2.4.2 | 3223 | 3200-3400 |
| Weblogic.so | APR | 2.4.2 | 1033 | 350-1400 |
結論:mod_jk 配合 APR 表現最佳;Weblogic.so 遺留模組效能極差、穩定性極低。
| Apache | JBoss | Cache 版本 | TPS | TPS 區間 |
|---|---|---|---|---|
| 無 | APR | 2.4.2 | 1705 | 1600-1900 |
| 無 | APR | 2.4 | 1615 | 1550-1700 |
| mod_jk | APR | 2.4.2 | 3223 | 3200-3400 |
| mod_jk | APR | 2.4 | 2485 | 2650-2800 |
洞察:無 Apache 時版本差異不明顯(非瓶頸);加入 Apache 提升請求處理後,Client 2.4.2 效能優勢顯現(單測 500 併發下約 40% 提升)。
| ISP 延遲 | TPS | TPS 區間 |
|---|---|---|
| 20ms | 3223 | 3200-3400 |
| 110ms | - | - |
| 900ms | - | - |
高延遲嚴重拖垮 TPS,證實 SIP 對下游回應極度敏感。
split() 在底層通訊路徑調用頻繁時應以手寫解析替換。<Connector port="8128" address="${jboss.bind.address}"
maxThreads="1024" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="1024"
connectionTimeout="20000" disableUploadTimeout="true"
useBodyEncodingForURI="true"/>
KeepAlive Off
<IfModule worker.c>
ServerLimit 80
ThreadLimit 128
StartServers 10
MaxClients 8000
MinSpareThreads 64
MaxSpareThreads 800
ThreadsPerChild 100
MaxRequestsPerChild 10000
</IfModule>
net.ipv4.ip_local_port_range = 1024 65535
並調大 ulimit -n 及 ip_conntrack_max。
Tomcat 原生庫放置於 bin/native 目錄,啟動時自動偵測載入(支援 sendfile, epoll, OpenSSL, 共享記憶體等)。