Сейчас пишу dating site на ASP.NET / IIS и MS SQL Server, причем WWW и MS SQL Server - на разных серверах. Много разных фич, одна из них - Instant Messaging.
Эта Instant Messaging также сделана на ASPX, страница сама себя обновляет каждые 5 секунд, что создает нехилую нагрузку на MS SQL Server. Поэтому заказчику (да и мне тоже) показалось правильным снизить нагрузку за счет выноса таблицы содержащей IM сообщения в MS Access файл находящийся на WWW сервере.
Никто не может подсказать, даст ли такое решение ощутимую выгоду в скорости работы? Что обычно является более медленным звеном в интернет-системе: База данных или сервер содержащий ASPX файлы?
ASPX файлы включают много caching опций для ускорения работы, но большинство запросов на файлы все равно уникальны.
MS SQL Server or MS Server + MS Access
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: MS SQL Server or MS Server + MS Access
Чулпан wrote:1
причем WWW и MS SQL Server - на разных серверах.
2
каждые 5 секунд, что создает нехилую нагрузку на MS SQL Server.
3
Что обычно является более медленным звеном в интернет-системе: База данных или сервер содержащий ASPX файлы?
1 Это правильно !
2 Почему ? Сколько всего страниц одновременно себя обновляют ? То есть сколько обновлений в секунду всего ?
3 Разумется IIS узкое место. Обычно CPU utilisation IIS улетает в 100% когда сервер базы еще на 10-15%. Конечно если база правильно написана. Дизайн базы кривой, то CPU будет тоже не выше 10-15%, но будет куча обащений и ожиданий диска.
При Load balancing обычно 2-3-8... серверов IIS подключают к ОДНОЙ базе MS SQL и она все это тянет.
Итак вопросы:
1. У Вас реально работает медленно или это предположение ?
2. Если медленно то каково CPU IIS и SQL ?
3. Сколько запросов/сек идет на MS SQL (запустите SQL trace)
4. Вы используете connection pooling ? Если нет то почему ?
5. Если да и ваши запросы не используют хитрые опции SET и USE database, уменьшите количество запросов почти в два раза поставив Connection reset=false.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
-
- Уже с Приветом
- Posts: 1099
- Joined: 30 Sep 1999 09:01
- Location: Bryansk,RUSSIA >> Dublin, Ireland
Если у Вас эта конструкция действительно тормозит, не пожалейте потратить день на возню с Performance Monitor и найти действительное горлышко бутылки - по моему мнению Вы ничего не выиграете в плане скорости, перенеся часть данных в Access, зато приобретете кучу головной боли в плане синхронизации и многопользовании.
Удачи@С.Смирнов
-
- Новичок
- Posts: 28
- Joined: 17 Jun 2003 04:41
Re: MS SQL Server or MS Server + MS Access
Dmitry67 wrote:0. Сколько всего страниц одновременно себя обновляют ? То есть сколько обновлений в секунду всего ?
1. У Вас реально работает медленно или это предположение ?
2. Если медленно то каково CPU IIS и SQL ?
3. Сколько запросов/сек идет на MS SQL (запустите SQL trace)
4. Вы используете connection pooling ? Если нет то почему ?
5. Если да и ваши запросы не используют хитрые опции SET и USE database, уменьшите количество запросов почти в два раза поставив Connection reset=false.
0. При максимальной расчетной нагрузке в 300 пользователей получается 60 запросов в секунду
1. Реально работает медленно на старой версии написанной на чистом АСПе и безобразно спроектированной БД. Как будет вести себя новая система (переписанная на АСП.НЕТ и с перепроектированной БД) в продакшн сказать не могу - работает только в тестовом режиме с 1-3 пользователями.
Дополнительный минус - оба сервера (WWW и SQL Server) содержат еще дополнительно около десятка ДРУГИХ сайтов. Как они спроектированы (хорошо или плохо) я не знаю.
2.
CPU IIS - 7-40%
CPU SQL - 2-30%
3. Запустить SQL trace? А как это сделать?
Если я запускаю Profiler - там все пролетает со свистом и я не успеваю пересчитать вручную.
4. Вы используете connection pooling ?
А эта опция автоматизирована в ASP.NETе, что-то не могу найти?
Или Вы имеете в виду не закрывать connection каждый раз вручную при обращении к базе и хранить в application переменных?
YellowMan wrote:Если у Вас эта конструкция действительно тормозит, не пожалейте потратить день на возню с Performance Monitor и найти действительное горлышко бутылки - по моему мнению Вы ничего не выиграете в плане скорости, перенеся часть данных в Access, зато приобретете кучу головной боли в плане синхронизации и многопользовании.
Насчет головной боли - это точно. Сихронизация Accessа и SQL Serverа уже видится мне чересчур сложной и медленной, например теперь отправить Bulk IM to everybody невозможно с помощью одного селекта.
Performance Monitor - это фича ДОТ НЕТа?
-
- Уже с Приветом
- Posts: 28294
- Joined: 29 Aug 2000 09:01
- Location: SPB --> Gloucester, MA, US --> SPB --> Paris
Re: MS SQL Server or MS Server + MS Access
Чулпан wrote:0. При максимальной расчетной нагрузке в 300 пользователей получается 60 запросов в секунду
3. Запустить SQL trace? А как это сделать?
Если я запускаю Profiler - там все пролетает со свистом и я не успеваю пересчитать вручную.
4. Вы используете connection pooling ?
А эта опция автоматизирована в ASP.NETе, что-то не могу найти?
0. Для нормальных операторов (без table scan) 60 запросов в секунду - это просто НИЧТО
3. Там есть кнопочка Stop
Запустите его на минуту, потом пересчитайте
Или сделайте save as в йайл или таблицу для анализа
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014