今天用apache 自帶的ab工具測試,當并發量達到1000多的時候報錯如下:
[root@aa~]# This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Benchmarking 192.168.1.176 (be patient)
Completed 300 requests
Completed 600 requests
Completed 900 requests
apr_socket_recv: Connection reset by peer (104)
Total of 1085 requests completed
檢視應用伺服器和資料庫均未報錯,連接配接被重置,bingyi了以下,apr_socket_recv這個是作業系統核心的一個參數,在高并發的情況下,核心會認為系統受到了SYN flood攻擊,會發送cookies(possible SYN flooding on port 80. Sending cookies),這樣會減慢影響請求的速度,是以在應用服務武器上設定下這個參數為0禁用系統保護就可以進行大并發測試了:
/# vim /etc/sysctl.conf
net.ipv4.tcp_syncookies = 0
/# sysctl -p
然後就可以超過1000個并發測試了。
另附其他系統核心參數說明:
net.ipv4.tcp_syncookies = 0
#此參數是為了防止洪水攻擊的,但對于大并發系統,要禁用此設定
net.ipv4.tcp_max_syn_backlog
#參數決定了SYN_RECV狀态隊列的數量,一般預設值為512或者1024,即超過這個數量,系統将不再接受新的TCP連接配接請求,一定程度上可以防止系統資源耗盡。可根據情況增加該值以接受更多的連接配接請求。
net.ipv4.tcp_tw_recycle
#參數決定是否加速TIME_WAIT的sockets的回收,預設為0。
net.ipv4.tcp_tw_reuse
#參數決定是否可将TIME_WAIT狀态的sockets用于新的TCP連接配接,預設為0。
net.ipv4.tcp_max_tw_buckets
#參數決定TIME_WAIT狀态的sockets總數量,可根據連接配接數和系統資源需要進行設定。
本文轉自不要超過24個字元部落格51CTO部落格,原文連結http://blog.51cto.com/cstsncv/2073501如需轉載請自行聯系原作者
cstsncv