Увеличение скорости работы веб-сервиса - PullRequest
0 голосов
/ 20 марта 2010

Наш клиент-серверный продукт имеет протокол между ними как XML по HTTP. Здесь клиент запрашивает GET / POST-запрос к веб-серверу, а сервер отвечает XML. Сервер написан с использованием django. Сервер должен быть в сети, потому что по всему миру его используют многие клиенты.

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

Самая большая проблема - это скорость. Каждый запрос занимает около 5 секунд для ответа. Полученных данных также очень мало - в диапазоне 4-6 Кб.

Каковы механизмы повышения скорости веб-сервиса? Это обычный способ написания клиент-сервер? Существуют ли другие технологии и мы упускаем их?

Спасибо K

РЕДАКТИРОВАТЬ: я забыл упомянуть одну вещь - мы запускаем его в облаке. Еще одна вещь, которую я обнаружил, заключалась в том, что в хорошей сети она довольно быстрая - около 1-2 секунд, так что настройка сеансов TCP требует времени?

Ответы [ 3 ]

1 голос
/ 20 марта 2010

Я с tomfanning, это звучит как проблемы с задержкой (при условии, что вы обслуживаете приложение django в нормальном режиме, а сервер не слишком загружен).

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

Если это не сеть, вы можете запустить сервер разработки django в cProfile (python -m cProfile start_the_server.py), выполнить несколько запросов и Ctrl-C, чтобы получить информацию о профилировании по функциям.

Еще одна мысль: некоторые из распространенных вариантов сериализации XML в python могут быть очень медленными. Используйте lxml. Это не должно учитывать время отклика 5s для 4-6k.

1 голос
/ 20 марта 2010

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

Попробуйте использовать такой инструмент, как Wireshark , чтобы в качестве первого шага взглянуть на время HTTP-трафика в сети.

0 голосов
/ 20 марта 2010

Это основано на моем опыте работы с веб-сервисами на основе sql и c #. Не очень уверен насчет Джанго. Основным виновником этих действий будет поисковая часть базы данных. Попробуйте изолировать запрос БД, чтобы проверить производительность

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