Поведение приложения
Еще одним аспектом разработки приложений, который следует учитывать, является разница в поведении между локальными или внутрикомпьютерными операциями и поведением, когда операции выполняются между двумя сетевыми компьютерами. Существуют поведения приложений, которые могут нормально работать на локальном компьютере, но при выполнении по сети приводят к значительному снижению производительности и потреблению ресурсов. При разработке приложений Windows Sockets следует избегать следующих поведений приложений.
Поведения, которые следует избегать
Chatty Applications.
Некоторые приложения выполняют множество небольших транзакций. В сочетании с сетевыми издержками, связанными с каждой такой транзакцией, эффект умножается. В сети небольшие транзакции могут потреблять столько же ресурсов и столько же времени, сколько большие транзакции. Лучший подход — объединить несколько небольших транзакций в одну большую транзакцию.
Сериализованные транзакции.
Ненужная сериализация транзакций может привести к снижению производительности и повлиять на масштабируемость. Например, для выполнения 1000 сериализованных транзакций требуется по крайней мере 1000 * RTT. Лучший подход — параллельное выполнение несвязанных транзакций. При объединении сериализованных приложений с чатными приложениями скорость отклика может быть серьезно затруднена.
Примечание
Правильная десериализация приложения может оказаться сложной задачей. Если переход с сериализованного на параллельный окажется слишком сложным, рассмотрите возможность объединения нескольких транзакций в меньшее количество больших транзакций.
Транзакции fat.
Приложения, которые отправляют ненужные байты в сети, считаются жирными приложениями. Приложения, которые отправляют ненужные байты в сети, увеличивают нагрузку на сеть и производительность. Эта ситуация часто возникает из-за неэффективных структур данных или неэффективной потоковой передачи данных. Чтобы устранить эту проблему, оптимизируйте структуры данных или рассмотрите возможность использования сжатия.
В следующих разделах рассматриваются аспекты разработки приложений.
- Проблемы, связанные с TCP/IP
- Распознавание медленных приложений
- Вычисление накладных расходов с помощью Netstat
Связанные темы