1. 事件驱动,这个只是为了IO和CPU异步,让CPU从IO等待中解放出来,这样就能在CPU循环中往死里accept连接了,nginx就靠这个把apache玩死的,nodejs的快不仅仅因为这个,语言层的magic就扯远了。
2. 利用双核,2个核就2个进程,一个进程一个事件驱动核(epoll,select啥的),增加链接吞吐。
3. 参数调优,这才是最重要的一步,一个Socket连接默认是有内存消耗的,我不记得Python的Socket占用是4M还是多少来着了,当然这个也可以调优,eurasia的作者沈大侠说过可以搞到2M来着?当然这对于一个24G的服务器来说300w还是搞不定的,但是就送TCP本身来分析的话,tcp_rmem/tcp_wmem,这2个系统tcp读写缓存默认都很高,拉低到4k,然后把tcp_mem也得改下,这个说起来太麻烦,man一下就有了,总的来说就是得拉高High值
4. 网卡要给力,端口给足,句柄加高。