Полагаю, вы говорите о TCP-сокетах здесь ...
Помимо очевидной неэффективности, связанной с настройкой TCP-соединения каждую секунду, вы также, вероятно, в конечном итоге накапливаете сокеты в TIME_WAIT
(надеюсь на вашем клиенте).
Я написал о TIME_WAIT
и проблемах, связанных с масштабируемостью и стабильностью сервера, здесь, в моем блоге: http://www.serverframework.com/asynchronousevents/2011/01/time-wait-and-its-design-implications-for-protocols-and-scalable-servers.html
Учитываяскорость, с которой вы открываете и закрываете сокеты (раз в секунду это приведет к тому, что 240 (60 * 4) сокетов будут сидеть в TIME_WAIT
в нормальном (4 минуты) периоде 2MSL TIME_WAIT
), это не должно быть слишком большойпроблема в том, что сокеты TIME_WAIT
находятся на клиенте, а не на сервере, и если вы не подключаетесь к большому количеству серверов каждую секунду, но ... Если у вас много клиентов, подключающихся к вашему серверу каждую секунду, и выесли вы не уверены, что ваш сервер не накапливает сокеты в состоянии TIME_WAIT
, вы можете ограничить масштабируемость вашего сервера.
Альтернативой являетсяd Разъем соединения разомкнут и открывать его можно только в том случае, если и когда он прерван.Это может оказаться немного сложнее для первоначального программирования, но пул соединения таким способом, вероятно, будет значительно более эффективным (когда вам действительно нужно отправлять данные, вы просто отправляете данные, и вам не нужно проходить через TCP рукопожатие дляустановить соединение) и намного более эффективный ресурс на клиенте;ты не вечно держишь 240 розеток в TIME_WAIT
...