最近有個項目要用 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
得到的結果。之後果然可以創建更多的連接了。
結束語
- 在下太弱,路漫漫其修遠兮,要加油加油!