Asp.net производительность электронной коммерции - PullRequest
2 голосов
/ 07 февраля 2009

Я занимаюсь разработкой проекта электронной коммерции на Asp.Net 3.5 с C #. Я использую 3 уровня (Data + Business + UI) для доступа к данным из базы данных (Msql 2005).

Есть хранимые процедуры и все, что с ними происходит (методы CRUD)

Здесь проблема с производительностью, проект работает так медленно. Я не смог найти никаких проблем в модели транзакций.

Также проект работает на общем хостинге в зарубежной стране. Сервер базы данных и веб-сервер работают на разных компьютерах. Сервер базы данных имеет почти 1000 баз данных.

Как я могу проверить и узнать, в чем проблема?

Ответы [ 4 ]

5 голосов
/ 07 февраля 2009

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

Я бы добавил некоторые функции секундомера на «тестовую страницу», которая работает на вашем веб-сервере. Это должно дать вам основную информацию, чтобы увидеть, есть ли «горлышко бутылки» в ожидании, пока база данных вернет ваш запрос. Если бы вы зашли так далеко, я бы заподозрил, что это будет ваш веб-сервер.

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

Инструменты, такие как YSlow , также могут быть полезны, однако они обычно используются для тонкой настройки.

1 голос
/ 07 февраля 2009

Предлагаю вам взглянуть на трассировку:

http://davidhayden.com/blog/dave/archive/2005/07/17/2396.aspx

Это позволяет увидеть трассировку стека (последнее изображение в статье) и локализовать узкие места производительности.

1 голос
/ 07 февраля 2009

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

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

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

0 голосов
/ 24 февраля 2009

Быстрое решение, которое я разработал для ведения журналов производительности в моем веб-приложении, может помочь вам в этом. У меня есть веб-сервер и сервер БД, на котором запущено похожее приложение. Я написал веб-сервис, который запускает хранимую процедуру «сравнительного анализа» и возвращает время выполнения. Я написал приложение win, которое работает на моем сервере разработки, которое вызывает веб-сервис, передает ему имя хранимой процедуры и время, которое занимает весь запрос. Приложение win записывает данные в файл журнала и запускается каждые 10 минут как запланированное задание. Дополнительные сигналы тревоги включают автоматические электронные письма членам команды, когда производительность превышает указанный порог 3 раза подряд, не удается подключиться и когда восстанавливается до нормальной производительности после медленного периода.

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

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