none
Помогите включить работу через общую память связки MS SQL 2008 Std и 1С:Предприятие 8.1 под W2k8R2EE RRS feed

  • Вопрос

  • Всем Доброго Времени Суток!

    Столкнулись с проблемой низкой производительности связки MS SQL 2008 Standart и 1С:Предприятие 8.1 под W2k8R2 (всё на одном сервере). Изначально обсуждал в ветке:

    http://social.technet.microsoft.com/Forums/ru-RU/ws2008r2ru/thread/cde1f256-a8e6-42c9-b1e4-80013d5b80ef

    ИМХО у меня основная проблема, что не работает "мемори шаринг", так как исследуя через ProcessMonitor вижу активную сетевую переписку между sqlserv и rphost. Это не наблюдается на машине с аналогичным железом но под W2k3R2. Откуда и пришел к данному выводу.

    Тесты 1С: использую последнее время тест Гилева В. Оперативки на машинах 48Гб (W2k8R2) 40Гб (W2k3R2) процессоры примерно одинаковые 5550 и 5520. Тест в файловом варианте так же показывает примерно одинаковый результат -- около 44 попугаев.

    Под W2k3R2 + SQL2008 -- 35 попугаев

    Под W2k8R2 + SQL2008 -- 15 попугаев, причем иногда отсутствует по непонятной причине кэширование (тёмно синяя полоса в мониторе ресурсов 2008го) тогда производительность всего около 10 попугаев.

    Итого два вопроса:

    1. Как включить работу через общую память?

    2. Отчего зависит кэширует или нет SQL в свободную память и как его зафиксировать в режиме кэширования???

Ответы

  • про serverb есть записи в C:\Windows\System32\drivers\etc\hosts ? Судя по ProcMon-у в вашем альбоме сетевой обмен с ним идёт и значит какой-то IP у него есть? КАКОЙ?


    Не забывайте отмечать поcты как ответы, а также помечать полезные сообщения!
    • Помечено в качестве ответа vkonst 21 июня 2010 г. 9:30
    21 июня 2010 г. 7:34
  • а как насчёт управления питанием? я тут тоже бился с такой проблемой, всё решилось после смены схемы управления питанием с "сбалансированный" на "высокая производительность"
    • Помечено в качестве ответа vkonst 9 июля 2010 г. 7:14

Все ответы

  • Вот это не понял: 2. Отчего зависит кэширует или нет SQL в свободную память и как его зафиксировать в режиме кэширования???

    Объём памяти настраивается на соответствующей вкладке. По идее за неё SQL не должен вылазить.

    Я, например, монопольно занимаю память под SQL методом AWE - и точно знаю, что никто больше на неё не сможет претендовать.

    Господа, я тоде ОЧЕНЬ заинтересован в данном вопросе. Прошу Гуру писануть пару строк, даже если у вас нет чёткого ответа.


    Не забывайте отмечать поcты как ответы, а также помечать полезные сообщения!

  • Вот это не понял: 2. Отчего зависит кэширует или нет SQL в свободную память и как его зафиксировать в режиме кэширования???

    Объём памяти настраивается на соответствующей вкладке. По идее за неё SQL не должен вылазить.

    Я, например, монопольно занимаю память под SQL методом AWE - и точно знаю, что никто больше на неё не сможет претендовать.

    Ну вот есть в 2008R2 монитор ресурсов (открывается например из диспетчера задач) у него на закладке "Память" есть цветная линейка с распределением памяти. На ней есть синяя зона (ожидание) с расшифровкой -- память в которую закэшированы данные. Как я понял в ней отображается в сумме весь кэш (как минимум дисков и SQL). Иногда под кэш отведено очень мало, иногда он забивает вообще всю свободную память (например сейчас под кэшем 11Гб ОЗУ мин попадания в кэш SQL 91,2%). После экспериментов пришол к тому, что максимальная производительность ИМХО достигается когда в кэше большого объема (например как сейчас) + есть свободная память + SQL не достиг верхней границы выделенного ему объёма. Хотя вполне возможно я тут ошибаюсь Может быть большую роль играет % попадания в него, чем объем кэш, но остальные два компонента помоему точно положительно влияют на производительность.

    Видимо мой вопрос №2 по другому звучит тогда так: можно ли какими-то настройками завиксировать SQL в состаоянии макс производительности (чтоб например он сбрасывал лишнее из кэша и ОЗУ в свободные моменты или наоборот м.б. по расписанию или ещё как) чтоб не достигалась выделенная ему граница памяти и не забивалась вся физическая память, но при этом и кэш был бы достаточно большой, например 5-7Гб? Или же надо вручную постоянно следить за ним, сгонять ему память, и избавлятся от кэша?

  • Кто-нибудь знает что означает при просмотре через ProcMon:

    10:54:48,5334264 rphost.exe 1532 TCP Send serverr2.none.local:61422 -> serverb:ms-sql-s SUCCESS Length: 258, startime: 969185, endtime: 969185, seqnum: 0, connid: 0 0.0000000
    10:54:48,5334532 rphost.exe 1532 TCP Receive serverr2.none.local:61422 -> serverb:ms-sql-s SUCCESS Length: 440, seqnum: 0, connid: 0 0.0000000

    Имею ввиду что это за вид протокола SQL? У нас такого доменного имени serverb не существует.

    11 июня 2010 г. 7:42
  • Добрый день,

    подтверждения предположению не нашел, но есть мысль, что это подключение консоли к инстансу.

    16 июня 2010 г. 10:52
    Модератор
  • а при чем тут rphost тогда? Процесс консоли SQL как я понимаю называется ssms.exe а консоли 1С -- mmc.exe. Данииил, объясните попопдробнее свою мысль плизз...

    17 июня 2010 г. 10:11
  • Уважаемый vkonst ,

    Посмотрите вот это , вы правы, это не консоль. Это 1С, а по этому поводу есть много обсуждений, например, вот .

    Проблема именно а этом процессе?

    18 июня 2010 г. 7:14
    Модератор
  • Нет, проблема в том что производительность сервера не соответствует ожиданиям, если заменить ОС с win2k8r2 на win2k3, то производительность возростает на 60% и перестаёт "плавать". После анализа происходящего через Process Monitor заметил, что под win2k3 rphost через tcp/ip обменивается пакетами только с другими серверами (сервер пользовательского ключа и терминальные сессии с других серверов). Под win2k8r2 ситуация другая. Идет активный обмен через tcp/ip с локально расположенным MS SQL, часть обмена идет на некий serverb:ms-sql-s. Причем иногда весь обмен идет через serverb:ms-sql-s, иногда только часть а иногда в логах эти записи вообще отсутствуют.

    При активном использовании serverb:ms-sql-s производительность максимальна (22-24 по тесту http://gilev.ru/1c/tpc/tpc1ca.rar В. Гилева) а процент сетевой активности всего лишь 2-3% от всех событий регистрируемых procmon (но это всё равно не 30-34 если использовать win2k3)

    Если же serverb:ms-sql-s в логах не встречается, то производительность всего лишь 6-8!!!

    Опытным путем определил, что если оставить включенной только общую память, то весь обмен идет через serverb:ms-sql-s. Но по непонятной причине производительность при этом не наблюдалась выше 10! Но если включены все протоколы, то когда начинает активно использоваться serverb:ms-sql-s, то производительность максимальна, т.е. 22-24.

    Поэтому хочу узнать что это за протокол такой и как сделать производительность максимальной.

    19 июня 2010 г. 13:55
  • vkonst Ваша информация у меня не подтверждается. Включены все протоколы - 26,32, оставлен только shared memory - 30,86

    Железо: 2xXeon 5420 (4 core 2500MHz) + MB S5000PSLSATAR + 16Gb DDR2 667MHz ECC + SRCSASRB 512MB Cache BBU (system - 2x70Gb SAS 15k RAID1) (5x70Gb SAS 15k RAID5)

    ПО: w2k8r2 std + sql2008std CU7 3Гб RAM + 1C 8.1.15.14 x32. База для тестирования работает в режиме Simple.

    ProcMon не регистрирует сетевой активности процесса sqlservr.exe ВООБЩЕ в режиме ТОЛЬКО Shared Memory. Память для SQL выделена методом AWE.

    Конечно удивляет тот факт, что Shared memory даже будучи в приоритете не используется :-(. т.к. на SQL крутится не только 1С - оставить только shared memory нет возможности.

    P.S. Кстати посмотрите какие протоколы у вас настроену у Native SQL Client - я оставил только Shared memory.


    Не забывайте отмечать поcты как ответы, а также помечать полезные сообщения!
    20 июня 2010 г. 4:50
  • mikas а у вас наблюдается использование serverb при использовании какого либо протокола?

    Я знаю что есть системы под win2k8r2 где производительность в норме, но мне не понятно в чем разница с нами... Что означает CU7 3Гб RAM? Это какая-то другая сборка SQL + ограничение по памяти??? У нас sql2008std 10.0.2531. Мин разрешено 4Гб, макс 28Гб.

    20 июня 2010 г. 8:15
  • serverb - это какой-то нонсенс. Это не протокол... я даже незнаю что это конкретно. ТАКОГО у меня нет. Покажите скриншот TCPView или ProcMon.

    Про сборку. Забыл указать что установлен SP1: SQL 2008 SP1 CU7 build 10.00.2766.00

    CU7 - Cumulative Update 7 - http://support.microsoft.com/kb/979065/en-us   http://www.itcommunity.ru/blogs/rsug/archive/2010/03/16/96234.aspx

    По памяти: min 1Гб max 3Гб.


    Не забывайте отмечать поcты как ответы, а также помечать полезные сообщения!
    20 июня 2010 г. 12:50
  • Ссылка на скрины:

    http://picasaweb.google.ru/lh/sredir?uname=111998813158027088381&target=ALBUM&id=5484870177003372273&authkey=Gv1sRgCInI_r21uYKe6wE&feat=email

    один скрин сегодняшний (на нем serverb как будто в домене, но не пинг не nslookup его не видят, другой скрин от 19 мая там как и в тексте поста просто serverb)

    Сейчас пытаюсь скачать хотфикс, как я понял мне подходит 409101. Поставлю фикс -- отпишусь....

    20 июня 2010 г. 15:10
  • Добавил скрин, что регистрирует procmon после установки CU7 (включена только общая память - 14,49 попугаев). Если включить все протоколы то обмен с serverb исчезает (видимо работает tcp/ip) тест показывает 10,59. Если включить именованные каналы -- 13,19 попугая, serverb не наблюдается. Включил связку общая память и именованные каналы -- 15,58 попугая, в логах появился serverb.none.local, как на утреннем скрине. Оставил этот вариант, буду следить раскочегарится ли сервер.....

    20 июня 2010 г. 15:41
  • Судя по скринам SQL сдесь вообще не причём. К вашему мифическому serverb (какой кстати ip у него? Посмотрте с помошью TCPView с выключенным ресолвингом имён) конектится службы 1С. Нужно смотреть настройи вашего кластера. Посмотрите зарегистрированные SPN псевдонимы вашего сервера (в консоли cmd.exe выполнить setspn -L serverb или setspn -L server2). Вы переименовывали когда нибудь ваш сервер server2? Вы создавали алиасы для вашего SQL сервера?

    Ксатти у меня как только появилась рабочая нагрузка, rphost стал подключаться к sql через TCP\IP :-(

    У вас SQL от какой учётки работает?

    UPD: SQL у меня работает от учётки LocalSystem, а сервер 1С от локальной учётки на компьютере (не доменной)


    Не забывайте отмечать поcты как ответы, а также помечать полезные сообщения!

    20 июня 2010 г. 22:51
  • Скрин с setspn -L serverb или setspn -L server2 добавил в альбом. Сервер с самого начала назывался serverr2.

    Службы так же как и у вас -- SQL из под локальной системы, 1С из под местной учетки. (тоже скрин выложил)

    21 июня 2010 г. 7:10
  • про serverb есть записи в C:\Windows\System32\drivers\etc\hosts ? Судя по ProcMon-у в вашем альбоме сетевой обмен с ним идёт и значит какой-то IP у него есть? КАКОЙ?


    Не забывайте отмечать поcты как ответы, а также помечать полезные сообщения!
    • Помечено в качестве ответа vkonst 21 июня 2010 г. 9:30
    21 июня 2010 г. 7:34
  • Кажется с загадочным serverb разобрался :о) Mikas огромное спасибо за подсказки!!! Да, в зоне обратного просмотра DNS нашел таки запись serverb и оказалось ip у него такой же как у buhserver'а. Т.е. эти записи логов надо трактовать как обращение к удаленному SQL. Но из-за глюка с dns-службой они так зашифровались! Глючные записи я удалил, производительность от этого не увеличилась :( Получается локальный sql и не общается через tcp/ip с rphost'ами! Т.е. возможно общая память работает!!! И проблема абсолютно в другом месте. Поэтому думаю уместно продолжить разбирательство в ветке win2k8r2. Поскольку результат 30 на более слабой машине достижим, то хочется всё-таки найти разницу в настройках.

    21 июня 2010 г. 9:30
  • А у меня остался вопрос, почему у меня Shared Memory под рабочей нагрузкой не используется. т.е. после перезапуска 1С и SQL используется, но как только включаются др. рабочие процессы (в терпинологии кластера 1С) они начинают общаться с SQL через TCP\IP.

    vkonst попробуйте запустить тест на свежем SQL и 1С - т.е. остановите службу 1С, потом службу SQL? запустите в обратном порядке (без рабочей нагрузки) и проведите тест. Вполне возможно производительность возрастёт.


    Не забывайте отмечать поcты как ответы, а также помечать полезные сообщения!
    21 июня 2010 г. 22:54
  • Когда я включал разные протоколы я так и делал, ставил настройку протокола, выключал службы или перезапускал сервер... и точное влияние устнановить не удалось. Ниже результаты тестов, но сразу оговорюсь, узнал как правильно смотреть какой протокол работает только вчера (умные люди посоветовали смотреть в sys.dm_exec_connections :), поэтому этой статистики нет:

    SERVERR2	08.06.2010 21:13:06	SERVERR2:1741	20,00	SQL	8.1.15.14		до перезагруза
    SERVERR2	08.06.2010 21:40:30	SERVERR2:1741	17,01	SQL	8.1.15.14		кончилась память
    SERVERR2	08.06.2010 21:57:39	SERVERR2:1741	19,84	SQL	8.1.15.14		после перезагрузки настройке всё те же
    SERVERR2	08.06.2010 22:05:07	SERVERR2:1741	19,61	SQL	8.1.15.14		2ой раз после перезагрузки
    SERVERR2	08.06.2010 22:36:10	SERVERR2:1741	21,46	SQL	8.1.15.14		включены только им. каналы
    SERVERR2	08.06.2010 22:45:34	SERVERR2:1741	20,75	SQL	8.1.15.14		2ой прогон
    SERVERR2	08.06.2010 22:59:33	SERVERR2:1741	19,92	SQL	8.1.15.14		 смотрел что происходит в процесс мониторе
    SERVERR2	08.06.2010 23:31:04	SERVERR2:1741	9,40	SQL	8.1.15.14		включена только общая память
    SERVERR2	09.06.2010 00:00:06	SERVERR2:1741	11,36	SQL	8.1.15.14		2ой раз
    SERVERR2	09.06.2010 00:14:19	SERVERR2:1741	10,78	SQL	8.1.15.14		c proc mon
    SERVERR2	09.06.2010 00:43:41	SERVERR2:1741	18,52	SQL	8.1.15.14		только TCP/IP
    SERVERR2	09.06.2010 00:58:58	SERVERR2:1741	18,45	SQL	8.1.15.14		2ой раз
    SERVERR2	09.06.2010 01:17:22	SERVERR2:1741	18,73	SQL	8.1.15.14		с прок моном
    SERVERR2	09.06.2010 01:46:06	SERVERR2:1741	16,23	SQL	8.1.15.14		снова именованные каналы
    SERVERR2	09.06.2010 01:58:56	SERVERR2:1741	15,48	SQL	8.1.15.14		2ой раз
    SERVERR2	09.06.2010 02:42:14	SERVERR2:1741	9,86	SQL	8.1.15.14		отключена общая память
    SERVERR2	09.06.2010 03:10:20	SERVERR2:1741	8,85	SQL	8.1.15.14		всё включено
    SERVERR2	09.06.2010 08:46:04	SERVERR2:1741	8,03	SQL	8.1.15.14		просто проверка
    SERVERR2	09.06.2010 10:51:33	SERVERR2:1741	7,89	SQL	8.1.15.14		после падения sqlserv -- что-то большое продолжает сидеть в памяти
    SERVERR2	09.06.2010 11:20:29	SERVERR2:1741	8,01	SQL	8.1.15.14		что-то большое всё ещё в памяти
    SERVERR2	09.06.2010 11:49:12	SERVERR2:1741	13,77	SQL	8.1.15.14		только именованные каналы
    SERVERR2	09.06.2010 12:25:43	SERVERR2:1741	7,97	SQL	8.1.15.14		люди включились в работу?
    SERVERR2	09.06.2010 12:40:45	SERVERR2:1741	16,67	SQL	8.1.15.14		что-то завершилось в sql и он освободил память (20Гб)
    SERVERR2	09.06.2010 13:40:06	SERVERR2:1741	14,01	SQL	8.1.15.14		
    SERVERR2	09.06.2010 15:30:13	SERVERR2:1741	11,57	SQL	8.1.15.14		
    SERVERR2	09.06.2010 23:59:32	SERVERR2:1741	16,03	SQL	8.1.15.14		
    SERVERR2	10.06.2010 08:18:35	SERVERR2:1741	18,66	SQL	8.1.15.14		сразу после перезагрузки, все протоколы включены
    SERVERR2	10.06.2010 09:36:53	SERVERR2:1741	17,86	SQL	8.1.15.14		
    SERVERR2	10.06.2010 16:57:46	SERVERR2:1741	19,01	SQL	8.1.15.14		
    SERVERR2	11.06.2010 08:05:21	SERVERR2:1741	19,16	SQL	8.1.15.14		
    SERVERR2	11.06.2010 10:33:01	SERVERR2:1741	22,83	SQL	8.1.15.14		кэш 11Гб SQL 19Гб свободно 2,5Гб %сетевой активности 2-3% есть обмен на serverb:
    SERVERR2	11.06.2010 11:40:53	SERVERR2:1741	20,83	SQL	8.1.15.14		
    SERVERR2	11.06.2010 20:56:39	SERVERR2:1741	20,33	SQL	8.1.15.14		
    SERVERR2	13.06.2010 10:20:04	SERVERR2:1741	22,52	SQL	8.1.15.14		
    SERVERR2	14.06.2010 14:00:27	SERVERR2:1741	12,38	SQL	8.1.15.14		
    SERVERR2	14.06.2010 14:45:47	SERVERR2:1741	11,06	SQL	8.1.15.14		
    SERVERR2	14.06.2010 15:28:07	SERVERR2:1741	10,66	SQL	8.1.15.14		
    SERVERR2	14.06.2010 17:49:36	SERVERR2:1741	10,35	SQL	8.1.15.14		
    SERVERR2	14.06.2010 20:45:06	SERVERR2:1741	9,78	SQL	8.1.15.14		
    SERVERR2	14.06.2010 21:50:26	SERVERR2:1741	13,55	SQL	8.1.15.14		
    SERVERR2	15.06.2010 08:15:38	SERVERR2:1741	8,20	SQL	8.1.15.14		
    SERVERR2	15.06.2010 09:54:14	SERVERR2:1741	7,85	SQL	8.1.15.14		
    SERVERR2	15.06.2010 10:33:31	SERVERR2:1741	12,14	SQL	8.1.15.14		
    SERVERR2	15.06.2010 11:57:29	SERVERR2:1741	12,79	SQL	8.1.15.14		
    SERVERR2	15.06.2010 12:08:34	SERVERR2:1741	11,76	SQL	8.1.15.14		
    SERVERR2	15.06.2010 12:21:27	SERVERR2:1741	11,47	SQL	8.1.15.14		
    SERVERR2	15.06.2010 14:05:15	SERVERR2:1741	12,05	SQL	8.1.15.14		
    SERVERR2	15.06.2010 16:50:17	SERVERR2:1741	9,31	SQL	8.1.15.14		
    SERVERR2	16.06.2010 10:10:52	SERVERR2:1741	13,26	SQL	8.1.15.14		
    SERVERR2	16.06.2010 14:31:04	SERVERR2:1741	11,31	SQL	8.1.15.14		
    SERVERR2	16.06.2010 22:15:49	SERVERR2:1741	11,19	SQL	8.1.15.14		
    SERVERR2	16.06.2010 22:31:59	SERVERR2:1741	8,76	SQL	8.1.15.14		откючал tcp/ip
    SERVERR2	16.06.2010 22:46:14	SERVERR2:1741	11,71	SQL	8.1.15.14		
    SERVERR2	17.06.2010 07:42:11	SERVERR2:1741	11,06	SQL	8.1.15.14		
    SERVERR2	17.06.2010 10:00:42	SERVERR2:1741	13,48	SQL	8.1.15.14		
    SERVERR2	17.06.2010 11:56:11	SERVERR2:1741	13,97	SQL	8.1.15.14		
    SERVERR2	17.06.2010 14:31:03	SERVERR2:1741	13,05	SQL	8.1.15.14		
    SERVERR2	18.06.2010 09:42:06	SERVERR2:1741	10,80	SQL	8.1.15.14		
    SERVERR2	20.06.2010 12:37:19	SERVERR2:1741	9,31	SQL	8.1.15.14		
    SERVERR2	20.06.2010 20:10:15	SERVERR2:1741	14,49	SQL	8.1.15.14		Установил CU7 -- перезагрузка, только общая память
    SERVERR2	20.06.2010 20:31:37	SERVERR2:1741	10,59	SQL	8.1.15.14		включил все протоколы рестарт SQL и 1С
    SERVERR2	20.06.2010 20:45:01	SERVERR2:1741	13,19	SQL	8.1.15.14		включил именованные каналы рестарт SQL и 1С
    SERVERR2	20.06.2010 20:56:24	SERVERR2:1741	15,58	SQL	8.1.15.14		включил общую память и именованные каналы, рестарт SQL и 1С
    SERVERR2	21.06.2010 10:56:07	SERVERR2:1741	14,12	SQL	8.1.15.14		
    SERVERR2	21.06.2010 12:59:06	SERVERR2:1741	9,45	SQL	8.1.15.14		
    SERVERR2	21.06.2010 14:41:20	SERVERR2:1741	9,38	SQL	8.1.15.14		
    SERVERR2	21.06.2010 15:25:55	SERVERR2:1741	11,29	SQL	8.1.15.14		перезагрузился включил все протоколы
    SERVERR2	21.06.2010 19:01:31	SERVERR2:1741	15,53	SQL	8.1.15.14		
    SERVERR2	22.06.2010 10:23:20	SERVERR2:1741	14,66	SQL	8.1.15.14		кэш 28Гб, SQL ограничен 4Гб
    22 июня 2010 г. 8:59
  • vkonst спасибо за наводку.
    Запускаю запрос при рабочей нагрузке:
    SELECT net_transport, client_net_address, client_tcp_port, auth_scheme
    FROM sys.dm_exec_connections
     
    И вижу как shared memory так и TCP соединения с локальной машиной :-( С удалённым сервером (где стоит wsus) всё как нужно - TCP.
    Локальные TCP соединения аутентифицированы по схеме NTLM, а удалённые по KERBEROS. Сервер так же выполняет роль терминального (TS, RDS) и Hyper-V. Виртуализация IP не включена.
    Один вопрос: почему присутствуют локальные TCP соединения?
    Не забывайте отмечать поcты как ответы, а также помечать полезные сообщения!
    23 июня 2010 г. 4:04
  • + А у меня ещё при одном из запросов к sys.dm_exec_connections выкинуло:

    Сообщение 232, уровень 20, состояние 0, строка 0
    Ошибка на транспортном уровне при отправке запроса серверу. (provider: Поставщик общей памяти, error: 0 - Идет закрытие канала.)

    23 июня 2010 г. 9:15
  • Если смотреть через sys.dm_exec_connections то 1С работает или через Named Pipes или через TCP причем как под W2k3 так и под W2k8R2. Общая память вообще не используется, но производительность разная. М.б. сетевой интерфейс под 2008ым тормозит?

    25 июня 2010 г. 5:58
  • а как насчёт управления питанием? я тут тоже бился с такой проблемой, всё решилось после смены схемы управления питанием с "сбалансированный" на "высокая производительность"
    • Помечено в качестве ответа vkonst 9 июля 2010 г. 7:14
  • Да! Это действительно то что мне нужно :) производительность по тесту Гилева достигла 28,09!