Настройка производительности в Linux для серверного приложения на основе TCP - PullRequest
0 голосов
/ 21 октября 2011

Я написал приложение, которое связывается по TCP, используя собственный протокол. У меня есть тестовый клиент, который запускает тысячи потоков, каждый из которых делает запросы от клиента, и я заметил, что могу получать только около 100 запросов в секунду, даже с довольно простыми операциями. Все эти запросы поступают от одного и того же клиента, поэтому они могут быть релевантными.

Я пытаюсь понять, как я могу сделать вещи быстрее. Я немного читал о настройке производительности в этой области, но я пытаюсь понять, что мне нужно понять для настройки производительности сетевых приложений, подобных этой. С чего мне начать? Какие настройки Linux мне нужно переопределить, и как мне это сделать?

Помощь очень ценится, спасибо!

Ответы [ 3 ]

0 голосов
/ 20 декабря 2011

Рассматривали ли вы использовать асинхронные методы для выполнения теста вместо того, чтобы создавать множество потоков.Каждый раз, когда один поток останавливается, а другой запускается на том же ядре процессора, иначе. переключение контекста , могут быть очень значительные издержки.Если вам нужен быстрый пример работы сети с использованием асинхронных методов, проверьте networkComms.net и посмотрите, как используется свойство NetworkComms.ConnectionListenModeUseSync здесь .Очевидно, что если вы работаете в Linux, вам придется использовать mono для запуска networkComms.net.

0 голосов
/ 13 июля 2013

Вам необходимо понять следующую утилиту Linux Команда

uptime - Сообщите, как долго работает система.

uptime отображает в одной строке следующую информацию. Текущее время, продолжительность работы системы, количество пользователей, вошедших в систему, и средние значения загрузки системы за последние 1, 5 и 15 минут.

top обеспечивает постоянный взгляд на активность процессора в режиме реального времени. Он отображает список наиболее ресурсоемких задач в системе и может предоставить интерактивный интерфейс для управления процессами

Команда mpstat записывает в стандартные операции вывода для каждого доступного процессора, процессор 0 является первым. Глобальная средняя активность среди всех процессоров также сообщается. Команда mpstat может использоваться как на машинах SMP, так и на машинах UP, но на последних будут напечатаны только глобальные средние активности. Если никакие действия не были выбраны, то отчетом по умолчанию является отчет об использовании ЦП.

iostat - команда iostat используется для мониторинга устройства ввода / вывода системы загрузка, наблюдая за временем, когда устройства активны по отношению к их средняя скорость передачи.

vmstat сообщает информацию о процессах, памяти, пейджинге, блокировании ввода-вывода, прерываниях и активности процессора. В первом отчете приведены средние значения с момента последней перезагрузки

free - отображать информацию о свободной и использованной памяти в системе

ping: ping использует обязательную дейтаграмму ECHO_REQUEST протокола ICMP для извлечения ICMP ECHO_RESPONSE из хоста или шлюза

Dstat позволяет вам просматривать все ваши системные ресурсы мгновенно, например, вы можете. сравнить использование диска в сочетании с прерываниями с вашего IDE-контроллера или сравнить значения пропускной способности сети напрямую с пропускной способностью диска (в том же интервале)

Тогда вам нужно знать, как работает протокол TCP. Узнайте, как определить сеть. Задержка , где проблема, это проблема с ACK, SYCN, ACK SYC, DATA, RELEASE

0 голосов
/ 21 октября 2011

Поиграйтесь с Sysctls и Опции сокета стека TCP: man tcp (7) .Например, вы можете изменить отправляющий и принимающий буфер tcp или включить NO_DELAY .На самом деле для настройки самого стека TCP вы должны знать, как работает TCP.Такие вещи, как медленный запуск, управление перегрузкой, окно перегрузки и т. Д. Но это связано с производительностью передачи / приема и буферами, возможно, с обработкой вашего процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...