11 高并发性能调优
11.1 单机百万连接调优
11.1.1 如何模拟百万连接
使用两台虚拟机,一台服务端一台客户端
如何模拟呢?
情况1:一台Client一台Server,只能有6w连接,因为Client只剩下大概6w个端口可以去连接服务端
优化1:可以使用多个Client去连接服务端,要开启十几台虚拟机,麻烦
优化2:服务端启动8000~8100端口,且因为TCP是一个四元组概念:源ip、源端口、目标ip、目标端口;
这样Client同一个端口可以连接Server不同端口,会被当成不同的连接,这样就有600w连接,所以此处使用这种方法:
11.1.2 突破局部文件句柄限制
默认情况下,单个进程打开的句柄数非常有限,而一个TCP连接对应一个句柄,这样导致了一个服务端建立的连接数收到了限制,所以我们要突破句柄总量,即一个进程能够打开的最大文件数
首先使用ulimit -n,看看Linux一个进程能够打开的最大文件数(Linux中,一个TCP连接对应一个文件数),可以看到为1024
然后使用sudo vim /etc/security/limits.conf,添加如下两行:
#当前用户、限制、打开最大文件数、能够打开的最大文件数
* ha