Я занимаюсь разработкой сервера на C#. Этот сервер будет выступать в качестве сервера данных для службы резервного копирования: клиент будет отправлять данные, много данных, непрерывно, в частности, будет отправлять кусок данных объемом до пяти в одном и том же канале tcp. Я пошлю данные на сервер медленно, я не хочу убивать пропускную способность пользователя, поэтому мне не нужно было ускоряться при максимальной отправке данных, и по этой причине я могу использовать один канал tcp для всего.Socket.BeginReceive Performance on Mono
Сказано, что на самом деле сервер использует метод BeginReceive для получения данных от клиента, а в окнах это означает IOCP. Мои вопросы: как BeginReceive будет работать на linux/freebsd через моно? На окнах я читал много всего, будет очень хорошо работать, но это программное обеспечение, часть сервера, будет работать на Linux или FreeBSD через моно, и я не знаю, как эти методы реализованы на нем!
Подробнее, чтобы попытаться уменьшить распределение ресурсов объекта Async State для метода приема (Начало), я могу использовать один для подключения tcp и в обратном вызове BeginReceive. Я копирую данные перед повторным использованием (естественно, t очистить данные, потому что я знаю, сколько считывает значение возвращаемого значения EndReceive). Буфер установлен на 8kb, поэтому я буду при максимальной копии 8kb данных, он не должен убивать резорбции.
Моя цель - добраться до 400/500 соединений при макс. Это не так много, но сервер (машина), тем временем, будет обрабатывать файлы через собственную файловую систему (разработанную с использованием плавкого предохранителя сначала на C#, а затем на C) на LVM + Linux Software Raid Mirror и проверку антивируса с помощью clamav, так что программное обеспечение должно быть легким, как может!
EDIT: Я забыл сказать, что машина будет (возможно) Intel Core 2 Duo 2,66+ ГГц (3 МБ L2 - FSB 1066 МГц) с 2 ГБ оперативной памяти и SO с использованием 64 бит.
Моно использование epoll (libevent) или kqueue (on freebsd)? И я должен сделать что-то конкретное, чтобы попытаться максимизировать выступления? Могу ли я сделать что-то еще, чтобы не убивать ресурсы, получающие пакеты данных?
Добро пожаловать в сообщество! – JoshJordan