Есть сервер к которому будут присоединены 35000 клиентов которые изредка посылают короткие TCP-IP сообщения (и держат каналы открытыми)
Очень бы хотелось проверить на производительность...
1) Будет ли большая разница если проверять не с разных IP а всё на одном компе через 127.0.0.1 (или на другом одном из локальной сети)
2) Почему?
3) Можно ли на халяву эмитировать подключения с разных IP?
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>Есть сервер к которому будут присоединены 35000 клиентов которые изредка посылают короткие TCP-IP сообщения (и держат каналы открытыми) VYR>Очень бы хотелось проверить на производительность... VYR>1) Будет ли большая разница если проверять не с разных IP а всё на одном компе через 127.0.0.1 (или на другом одном из локальной сети) VYR>2) Почему? VYR>3) Можно ли на халяву эмитировать подключения с разных IP?
loopback вообще ведет себя сильно по-другому, чем нормальный сетевой интерфейс. На линухе соединение через loopback заворачивается в обход большей части TCP-стека, так что оно практически такое же дешевое, как AF_UNIX. А на венде оно парадоксально дорогое.
Я думаю, адекватной проверкой будет проверка с другого компьютера. Хотя, конечно, организовать с другого компьютера 35К исходящих соединений — само по себе challenge. Напиши тестовую программу на Go, там стандартная библиотека избавит тебя от существенной части головной боли.
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>Есть сервер к которому будут присоединены 35000 клиентов которые изредка посылают короткие TCP-IP сообщения (и держат каналы открытыми) VYR>Очень бы хотелось проверить на производительность... VYR>1) Будет ли большая разница если проверять не с разных IP а всё на одном компе через 127.0.0.1 (или на другом одном из локальной сети) VYR>2) Почему? VYR>3) Можно ли на халяву эмитировать подключения с разных IP?
Лучше, конечно, вторую сетевуху поставить и кросс-кабелем одну к другой подключить.
Хотя, во какая хрень есть. Тынц. Их, наверное, много можно с разными адресами насоздавать. Не 35 тыс. Конечно. Рука устанет добавлять, потом удалять.
Или скомбинировать два способа.
Здравствуйте, vvv848165@ya.ru, Вы писали:
VYR>1) Будет ли большая разница если проверять не с разных IP а всё на одном компе через 127.0.0.1 (или на другом одном из локальной сети)
Да. VYR>2) Почему?
Лупбэк не идёт через стэк напрямую. VYR>3) Можно ли на халяву эмитировать подключения с разных IP?
На халяву нет, за прайс есть сервисы которые дают возможность провести нагрузочное тестирование.
Здравствуйте, Maniacal, Вы писали:
M>Лучше, конечно, вторую сетевуху поставить и кросс-кабелем одну к другой подключить.
Система, она не дура, сама с собой через кросс-кабель разговаривать. Она быстро смекнет, что оба адреса — ее родные, локальные. И завернет все через loopback.
Здравствуйте, Pzz, Вы писали:
Pzz>Система, она не дура, сама с собой через кросс-кабель разговаривать. Она быстро смекнет, что оба адреса — ее родные, локальные. И завернет все через loopback.
Не-а. Трафик даже между сетевыми картами одного и того же хоста идёт через полный TCP-IP стек операционки, поэтому становится виден в WireShark (в отличие от loopback, с которым надо поприседать со всякими mirror-драйверами для NDIS).
Тут может вмешаться другая фишка — "strong/weak host model", когда система сама решает, что хотя пакет и просят посылать с интерфейса A, но с точки зрения самой ОС этот пакет эффективней/безопасней посылать с интерфейса B. Тогда да, всё может выродиться в loopback. Но в большинстве случаев достаточно явно прибиндиться к адресу конкретной сетевухи, чтобы сокет гарантированно отправил пакет именно через неё, особенно если другая сетевуха с адресом в той же подсети.