Факторы производительности в сети - PullRequest
3 голосов
/ 18 января 2011

Иногда я просто хожу по кругу, гадая, будет ли добавление thread queue с помощью одного потока, запрашивающего и обновляющего сервер базы данных за счет worker thread обработки пользовательских запросов, эффективным использованием ресурсов или нет, и как это будетповлиять на общую производительность приложения с точки зрения number of replies/sec?

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

ТАК, какие могут быть другие факторы, которые следует учитывать при программировании высокопроизводительных приложений ввода-вывода (особенно для сетей) как в управляемых, так и в неуправляемых средах?

1 Ответ

4 голосов
/ 18 января 2011

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

Похоже, у вас есть гипотетическое приложение на вашем компьютере, выполняющее запросы к базе данных, и вас интересует, увеличит ли поток это гипотетическое приложение его производительность.

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

В этом случае вам повезло, ресурсы, которые вы хотите сбалансировать, не конкурируют друг с другом.Сторона базы данных - это то, что мы называем вводом / выводом, а сторона потоков - это процессор.Приложения, как правило, связаны с вводом / выводом или с процессором, некоторые из них оба.В приложениях, связанных с вводом / выводом, переключение на более быстрый процессор не сильно ускорит процесс, и наоборот.

Если вы добавите дополнительные потоки, это поможет, если и только если у вашей сети есть время для дополнительного сетевого ввода-вывода.Добавление дополнительных потоков не увеличит нагрузку на процессор так, как он не сможет обработать, поскольку запрос будет отправлен в базу данных, а поток заблокируется.Как только запрос будет возвращен на ваш компьютер, будет выдано прерывание, и ваш поток будет удален из очереди ожидания.

Реальный вопрос: насколько хорошо вы хотите быть в вашей базе данных?

...