Я пишу две программы, используя сокет.Сервер прослушивает порт.И это откроет поток для соединения.Клиент отправляет соединение.
Когда я запускаю сервер и клиент локально, я могу создать 5000 соединений.Однако когда я размещаю серверную программу на облачном сервере, я использую watch ss -s
, чтобы увидеть номер соединения tcp.В процессе установления 5000 соединений некоторые соединения будут закрыты автоматически.
Даже если я установлю только 1300 соединений, некоторые соединения TCP также будут закрыты.Я использовал команду ulimit -n 65536
, чтобы открыть число локальных и удаленных потоков для 65536. И этот результат нестабилен, возможно, что из следующих 1300 подключений только 500 будут успешными, а 800 - неудачными ....
Почему это случилось?Это из-за скорости интернета?Или это из-за слишком большого количества потоков?Но мой тест на локальном компьютере не проблема
Ниже приведен результат команды watch ss -s
:
TCP: 1310 (estab 953, closed 348, orphaned 0, synrecv 0, timewait 0/0),
ports
0
Transport Total IP IPv6
* 0 - -
RAW 0 0 0
UDP 10 7 3
TCP 962 959 3
INET 972 966 6
FRAG 0 0 0