最近有个项目要用 etcd ,同时会有很多服务来连 etcd ,但是没搞清楚 etcd 的最大连接数是多少,总是心里虚,虽然可以压测。
- 首先试了一下,测试机器上可以创建多少个连接,大概 879 个左右。但是为什么是 879 个呢?etcd 用的是 grpc,所以 etcd 的最大连接数问题也是 grpc 的最大连接数问题。
- 所以去 grpc-java 的 issues 上找了一下,正好发现有人提了一个:How support 20K connections in server PC,里面有详细解答。
- 在机器上执行以下命令:
~$ ulimit -Hn
4096
~$ ulimit -Sn
1024
- Linux 对于单个进程打开的文件数量是有限制的,我的机器上单个进程最多只能打开 1024 个文件,所以创建的连接数也会在 1024 以下。在下学艺不精,对于网络还不是特别熟悉,以后要恶补网络知识了。
- 可以通过
ulimit -Sn 4096
来提高可以打开的文件数,这个数字不能超过ulimit -Hn
得到的结果。之后果然可以创建更多的连接了。
结束语
- 在下太弱,路漫漫其修远兮,要加油加油!