Экспозиция:
Мы используем программу, встроенную в MS Access, которую я обслуживаю через службы терминалов. Я только что установил новый сервер TS с четырехъядерным процессором Xeon 2,6 ГГц, 8 ГБ ОЗУ и 4 дисками SATA в массиве RAID 0. В установленном сервере 2008 R2 (очевидно, 64-битный). Это единственная роль - TS.
Эта проблема:
Всего за несколько сеансов (до 10) я начинаю получать частые сообщения «Не отвечает» в каждом сеансе. Когда это происходит, пользователи не делают ничего особенно обременительного, просто формируют навигацию и простые запросы вставки.
Я могу жить с некоторыми киосками, но в WS08 это визуально раздражает, потому что экран становится серым и представляет собой диалоговое окно, предлагающее подождать или закрыть с некоторыми другими параметрами.
Вопросы:
Похоже, вам нужен базовый анализ производительности для начала, чтобы увидеть, где вы узкие места. Цифры, которые вы получите из этой таблицы, дадут вам действительно общее представление о том, с чего начать искать проблемы с производительностью.
Я бы запустил Performance Monitor (Start / perfmon), перешел к узлу «Performance Monitor» и, используя значок «+» на панели инструментов, добавил следующие счетчики на диаграмму:
Память - Страниц / сек - здесь будет отображаться активность разбиения на страницы памяти, которая способствует плохой производительности (также может отображаться активность разбиения на страницы, которая также не имеет ничего общего с низкой производительностью). Если вы видите высокий пейджинг, значит, вы может быть узким местом в объеме оперативной памяти. Это также может проявляться как узкое место на диске (из-за операций чтения / записи в файл подкачки), поэтому будьте осторожны.
Физический диск - средн. Длина очереди диска - выберите экземпляр, который соответствует диску, на котором находится файл базы данных Access (при условии, что они находятся на локальном диске серверного компьютера) - это число не должно превышать 2-кратное количество шпинделей в RAID объем как очень и очень общее практическое правило. Вы можете глубже изучить счетчики дисков, если кажется, что у вас узкое место на диске.
Сетевой интерфейс - Всего байтов / сек. Выберите экземпляр, соответствующий сетевой карте, через которую клиенты обращаются к серверу. Если файл базы данных Access размещен в общей сетевой папке, добавьте экземпляр для сетевой карты, которую сервер использует для доступа к этому сетевому ресурсу (при условии, что это не тот сетевой адаптер, через который клиенты получают доступ к общему ресурсу). - Это даст вам общее количество байтов в секунду, проходящих через сетевой интерфейс. Вы можете использовать инструмент очень нагрузочного тестирования, WSTTCP, чтобы измерить максимальное использование полосы пропускания между сервером и клиентским компьютером. Сравните это число с этим числом.
Perfmon автоматически добавит счетчик «% загруженности процессора» для «общего количества» всех процессоров в машине. Я бы удалил его и добавил счетчик Processor -% Processor Time для каждого экземпляра процессора в машине индивидуально. Microsoft Access в основном однопоточный, и если вы просите один экземпляр процессора, счетчик «_Total»% Processor Time может показывать только 25% (или 12,5%, если у вас есть гиперпоточность на вашем процессоре).
Это покрывает потенциальные узкие места - диск, оперативную память, сеть и процессор. Вы можете использовать эту диаграмму, чтобы оценить общую производительность коробки. Затем вы можете приступить к изучению конкретных узких мест и нащупать виновника.
Мой заказчик развернул «маленькое приложение Access», которое они использовали в своем офисе в течение нескольких лет, на сервере терминалов под управлением Windows Server 2008 и в шоке при том, насколько плохо он работал. Он "нормально работал" на настольных компьютерах, и они ожидали, что будет то же самое на сервере терминалов. Оказалось, что они очень быстро израсходовали всю оперативную память на сервере терминалов, когда пользователи открывали приложение одновременно. Открытие базы данных на одном из настольных компьютеров с 1 или 2 ГБ ОЗУ не представляло большого труда, но 15 человек, пытающихся поделиться ею на сервере терминалов, были слишком трудными. (В базе данных были большие файлы PDF, хранящиеся в виде объектов OLE, если вы можете в это поверить ... Невероятно, но факт. Размер файла MDB превышал 300 МБ ...)
В качестве отступления: RAID 0? На сервере? Вы увеличиваете свои шансы на неудачу, используя RAID-0, поскольку он имеет «нулевую» избыточность. Если вы ищете высокую производительность, вам лучше использовать RAID-10 и пожертвовать дисковым пространством во имя надежности. Я не могу представить, что вам нужна чистая производительность ввода-вывода RAID-0 на машине с терминальным сервером, на которой выполняются приложения типа Microsoft Office.