|   |   | 
| 
 | Высоконагруженные веб-сервисы 1С - скорость работы | ☑ | ||
|---|---|---|---|---|
| 0
    
        MaxisUssr 02.03.15✎ 09:41 | 
        Есть база на PostgreSQL, веб-сервер Apache, опубликован к примеру простейший веб-сервис (чтобы не отвлекаться на обсуждение кода методов, структуры базы и т.д), отдает данные типа 10 строк "Код-наименование". Этот запрос в самом методе веб-сервиса и упаковка в пакет XDTO происходит так - в общем тестируя через SoapUI получаем цифру 77-88 миллисекунд на ответ.
 Но вот проблема - если делать нагрузочный тест, к примеру, кол-во запросов за секунду - то я могу получить всего 180 таких запросов , что очень мало. Во время этого теста проц на сервере 1С загружен на 100%, все остальное вроде не загружено. Вопрос - где читать, выяснять, что нужно в первую очередь настроить или прикупить м.б (железо?), чтобы увеличить количество запросов, которое может обработать сервер? Или нужно стремиться ускорить выполнение одного запроса? | |||
| 1
    
        Rebelx 02.03.15✎ 10:09 | 
        (0) запросы шлешь последовательно? и реально так будет в жизни?
 Попробуй параллельно, с разных машин, и смотри как распараллеливается запрос в 1С - должно быть много сеансов. если не хватает - добавляй сеансы - RTFM | |||
| 2
    
        MaxisUssr 02.03.15✎ 10:13 | 
        (1)
 Шлю через SoapUI пакет запросов, с разрывом в 1-5 миллисекунд каждый. Сеансов дофига в 1С. | |||
| 3
    
        shuhard 02.03.15✎ 10:14 | 
        (0) если есть бюджет, то ответ очевиден - http://www.gilev.ru/     | |||
| 4
    
        Rebelx 02.03.15✎ 10:15 | 
        (2) дофига это сколько? добавь в ответ информацию о текущем сеансе. Посмотри статистику, сколько реально сеансов работает.     | |||
| 5
    
        Rebelx 02.03.15✎ 10:18 | 
        (3) нифига не очевиден. или ты думаешь, что они знают ответы на все вопросы? Или если ты не знаешь ответ на какой-нибудь вопрос - сразу лапки к верху, сдаемсяяяя?     | |||
| 6
    
        vde69 02.03.15✎ 10:24 | 
        (1)>>>77-88 миллисекунд на ответ. 
 это примерно 1 сек на ответ, по моему ответ очевиден - надо сокразать время на ответы.... хотя-бы, до 0.1 сек.... >>>кол-во запросов за секунду - то я могу получить всего 180 таких запросов то есть ты имеешь примерно 150 конектов в секуунду... проблемма в том, что 1с сеанс поднимает долго, я-бы пошел путем поднятия например 100 сеансов и поодержка их в открытом состоянии через всякие кеши, а замеры производил с второй, третей секунды, ибо первая секунда - это инициализация сеансов... | |||
| 7
    
        vde69 02.03.15✎ 10:28 | 
        (6) кстати я делал похожую систему, только связь апач-1с я делал через ком, держал в переменных 10 открытых ком соединений... и текущие запросы в апаче определял в уже открытые ком обьекты, правда там с правами заморочка, я делал доп параметры в 1с для каждого запроса отдельные права через прарамтры функции делал... 
 писал на asp | |||
| 8
    
        MaxisUssr 02.03.15✎ 10:28 | 
        (6)
 Нет, в 1 секунде 1000 миллисекунд, 77 мс это 0.07 секунд. Поднять 100 сеансов и поддерживать не вариант - проверяется именно количество различных пользователей, которые коннектятся к базе. Если делаю например 2 секунды то получаю всего 280-300 запросов. | |||
| 9
    
        Apokalipsec 02.03.15✎ 10:29 | 
        (8) Железки-то какие?     | |||
| 10
    
        MaxisUssr 02.03.15✎ 10:29 | 
        (7)
 10 соединений - этого хватало? Почему не 100 соединений? (9) Железо Xeon 2.4 2 проца , 12 гб памяти, ОС 64 бит. | |||
| 11
    
        vde69 02.03.15✎ 10:31 | 
        (8) у тебя есть ID сеанса апача, его передаешь в виде параметра в функцию, по этому ID в 1с определяешь пользователя и его права...
 хотя конечно практика может все мои слова опровергнуть... | |||
| 12
    
        Apokalipsec 02.03.15✎ 10:31 | 
        распараллеливание, держать несколько веб-расширений, выделить под них отдельный сервер в кластере. Посмотреть на сам запрос,посмотреть его план.
 В общем вариантов-то очень много) У проца все ядра загружены? Какая платформа? Как сеансы в рабочем процессе живут - все в одном? | |||
| 13
    
        vde69 02.03.15✎ 10:33 | 
        (10) у меня было не на столько нагружено... у меня одновременоо 20-30 потоков было всего, мне хватало за глаза и одного сома... но делал на преспективу которая не случилась...     | |||
| 14
    
        MaxisUssr 02.03.15✎ 10:36 | 
        (4)
 Например результат 173 ответа - в 1С в регистре логов вижу те же 173 сеанса - в чем смысл? | |||
| 15
    
        MaxisUssr 02.03.15✎ 10:38 | 
        (12)
 Запрос пустой совсем. "Выбрать Таб.Наименование, Таб.Код из Справочник.ИмяСпр". И все. Платформа 8.2.14.528. | |||
| 16
    
        MaxisUssr 02.03.15✎ 10:58 | 
        (12)
 Где почитать про "Держать несколько веб-расширений, выделить под них отдельный сервер в кластере"? | |||
| 17
    
        MaxisUssr 02.03.15✎ 11:08 | 
        (12) Подожди - что-то я запутался - у меня же SOAP веб-сервисы, причем тут веб-расширения?     | |||
| 18
    
        Rebelx 02.03.15✎ 11:11 | 
        (14) Нет, обманул. надо смотреть не сеансы, а соединения.
 (17) веб-сервисы работают через веб-расширение. 1С выделяет пул соединений. по-умолчанию вроде 10 если надо масштабировать - надо увеличить пул. но лично я не знаю, как апач распределяет запросы по соединениям | |||
| 19
    
        MaxisUssr 02.03.15✎ 11:12 | 
        (6)
 Особой разницы нет, судя по тесту. Если 100 сеансов пуляю одновременно или например 40 сеансов (которые могут не по одному разу успеть пульнуть запрос) - примерно 160-200 запросов за секунду отрабатывает и там, и там. | |||
| 20
    
        koreav 02.03.15✎ 11:16 | 
        (0) Какой процесс грузит до 100%? Схему можно масштабировать поставив два апача, а перед ними балансировщик.     | |||
| 21
    
        MaxisUssr 02.03.15✎ 11:22 | 
        (20)
 Postgre грузит. | |||
| 22
    
        MaxisUssr 02.03.15✎ 11:25 | 
        (21)
 Ошибся - Rphost конечно же. | |||
| 23
    
        Rebelx 02.03.15✎ 11:28 | 
        (22) ну тут ответ очевиден - уперлись же в железо     | |||
| 24
    
        Serginio1 02.03.15✎ 11:38 | ||||
| 25
    
        Serginio1 02.03.15✎ 11:40 | 
        Упрости УстановкаПараметровСеанса 
 v8: Web сервис, момент подключения Для многих случаев можно для вэб сервисов просто упростить УстановкаПараметровСеанса | |||
| 26
    
        koreav 02.03.15✎ 11:52 | 
        Пример схемы с балансировщиком http://habrahabr.ru/post/213739/
 в вашем случае каждый апач должен обращаться к отдельному серверу приложений, если затык в rphost | |||
| 27
    
        MaxisUssr 03.03.15✎ 14:31 | 
        (25)
 Помогло немножко совсем. 0.1 сек. выиграл вроде. | |||
| 28
    
        Fragster гуру 03.03.15✎ 14:44 | 
        а еще можно заюзать вместо вебсервисов http-сервисы. по крайней мере будет контроль над объемом сериализации.     | |||
| 29
    
        Fragster гуру 03.03.15✎ 14:44 | 
        (28)+ вплоть до полного её отсутствия     | |||
| 30
    
        MaxisUssr 03.03.15✎ 14:50 | 
        Функция GetCategories()
 Возврат Неопределено; КонецФункции отклик даже на такой метод - уже 0.086 сек; установку параметров сеанса отключил. | |||
| 31
    
        Fragster гуру 03.03.15✎ 15:07 | 
        (30) а на http сервис сколько задержка?     | |||
| 32
    
        Гёдза 03.03.15✎ 15:10 | 
        (6) веб сервер кэширует соединение с 1с, так что последовательные запросы новый коннект не поднимают     | |||
| 33
    
        MaxisUssr 03.03.15✎ 15:17 | 
        (31)
 У нас 8.2.14... , поэтому HTTP к сожалению нет | |||
| 34
    
        MaxisUssr 04.03.15✎ 12:47 | 
        Проверил на 8.3 (поставил файловую базу) - пустой запрос примерно 20 миллисекунд идет, на SOAP тот же пустой запрос 0.7 - 0.8 миллисекунд! Не знаю, как на серверной 8.3 будет себя вести - подозреваю, что также.     | |||
| 35
    
        MaxisUssr 04.03.15✎ 13:01 | 
        (34)
 Ошибка - В SOAP 70-80 миллисекунд, в HTTP - до 20 миллисекунд | |||
| 36
    
        MM 04.03.15✎ 13:34 | 
        (35) А если нагрузить http?
 Может там и нагрузка на процессор меньше при большом количестве обращений? | |||
| 37
    
        pumbaEO 04.03.15✎ 15:18 | 
        5 apache и haproxy с балансировкой robinbobin.     | |||
| 38
    
        MaxisUssr 05.03.15✎ 10:25 | 
        (36)
 Да, хочу нагрузить его, но вот проблема - у нас 8.2 стоит серверная, а на 8.3 лицухи на сервер нету. Вчера вечером-ночьюпробовал поставить агент 8.3 на другой порт - не работал - пишет что нет серверной лицензии. Попробовал тогда отключи агент 8.2, включить 8.3 на стандартном 1541 порту, лицензию нашел но базу не создавал (видимо что-то еще недоставил, а рушить все, удаляя текущий агент сервера - не могу - люди же работают). Удалось только в файловом варианте развернуть 8.3 и нагружить http - но там печаль - никакой параллельности вообще, вроде, читал, что в файловой параллельности нет совсем. Добавил 6 или 8 рабочих процессов на сервер 1С - в результате процы стали немного больше загружены при массовой нагрузке "тяжелыми" запросами (легкие запросы полностью грузили сервер и при одном раб.процессе) | |||
| 39
    
        MM 05.03.15✎ 10:28 | 
        (38) Там надо файл лицензии сделать видимым 8.3, в одном из конфигурационных файлов путь указать. Если уж перемещать файл лицензии не хочется.     | |||
| 40
    
        fisher 05.03.15✎ 10:33 | 
        (39) Велика вероятность, что для 8.3 придется лицензировать заново. Механизмы лицензирования допиливались и что-то может не совпасть. Мне при переходе с 8.2 на 8.3 на том же железе пришлось генерить лицензии заново.     | |||
| 41
    
        MaxisUssr 05.03.15✎ 10:36 | 
        (39)
 Если отключить агент 8.2 и включить тупо 8.3 на том же порту, как я сделал - он нашел лицензии, но базу не смог создать (видимо не доделал я что-то - а удалять рабочие настройки и агента сервера и консоль 8.2 не стал, т.к сервер-то рабочий). | |||
| 42
    
        pumbaEO 05.03.15✎ 10:45 | 
        (41) 1. 8.3. запусти на другом порту. 
 2. поставь сервер 1с на линухе и соедини их добавив к виндовому серверу 8.3 еще один сервер по ip. 3. в ролях для виндового сервера добавь только роль "Лицензирование", а остальные запрети. Для линуксового все разрешить. | |||
| 43
    
        fisher 05.03.15✎ 11:15 | 
        Вообще, интересная ветка. Ежу было понятно, что 1С по определению не годится для публичных сервисов. Только для приватных порталов. Но результаты реальных тестов - это уже конкретная информация.
 И я не знаю, как это удалось разработчикам 1С, но давно уже в тестах замечена удивительная тенденция - очень часто узким местом на банальных операциях с СУБД становится не дисковая подсистема (что как бы логично), а процессорные мощности. | |||
| 44
    
        fisher 05.03.15✎ 11:17 | 
        Можно, конечно, побыть оптимистом и увидеть причину этого в эффективном кэшировании.     | |||
| 45
    
        MaxisUssr 05.03.15✎ 11:18 | 
        (43)
 Про публичные сервисы - спорное утверждение. Если нам нужно не постоянное получение данных миллионов строк, а какое-то действие (например, принять заявку/оставить отзыв и т.п) - по-моему 1С для этого вполне сгодится для средних (не больших и гигантских) порталов. | |||
| 46
    
        fisher 05.03.15✎ 11:27 | 
        (45) Согласен, погорячился. Для общедоступного портала для размещения заказов в компании, где поток заявок заведомо ограничен и хорошо прогнозируем - сгодится вполне.
 А вот даже просто для хранения данных, доступ к которым может стать резко популярным - уже болт. | |||
| 47
    
        MaxisUssr 05.03.15✎ 11:38 | 
        (46)
 Это очень печально - платформа-то в принципе не самая быстрая, но работает стабильно - если удастся разобраться с масштабируемостью (как например совет в (37)) - может быть создан неплохой проект. | |||
| 48
    
        oleg_km 05.03.15✎ 12:23 | 
        (47) Ну просто конфу придется затачивать под быстродействие. Например как многие создатели WMS для мгновенного отклика избегают регистров, все делают на документа, блокировки только на изменение текущих остатков. Это слабофункционально, но я у себя так делал модуль инвентаризации - все летает и никаких блокировок.     | |||
| 49
    
        MaxisUssr 05.03.15✎ 12:44 | 
        (48)
 Да, приходится все пихать в пару регистров сведений с примитивными строковыми и числовыми полями. Чтобы быстро считывать это все. | |||
| 50
    
        Гёдза 05.03.15✎ 12:44 | 
        Свой фэйсбук на 1с хочешь написать чтоли?     | |||
| 51
    
        MaxisUssr 05.03.15✎ 12:46 | 
        (50)
 Да нет конечно - но даже 300-600 запросов в секунду - очень большая проблема получить. И это вроде как считается немного. | |||
| 52
    
        Гёдза 05.03.15✎ 12:48 | 
        (51) последовательных?     | |||
| 53
    
        Гёдза 05.03.15✎ 12:48 | 
        параллельность достигается не только за счет уменьшения времени 1 процедуры     | |||
| 54
    
        MaxisUssr 05.03.15✎ 12:51 | 
        (52)
 Параллельных конечно | |||
| 55
    
        Гёдза 05.03.15✎ 12:53 | 
        (54) но тут уже все от железа зависит     | |||
| 56
    
        Гёдза 05.03.15✎ 12:54 | 
        На чем затык в железе?     | |||
| 57
    
        MaxisUssr 05.03.15✎ 12:59 | 
        (56)
 Процы загружены на 100% (на мелких запросах) и процентов на 60 на средних запросах (пробовал увеличить пул соединений Apache, в Postgre установил тоже макс.кол-во соединений 10000 - особо не помогло. Помогло немного добавление нескольких рабочих процессов к серверу 1С) | |||
| 58
    
        fisher 05.03.15✎ 15:15 | 
        (57) Ну так ты похоже в процы и упираешься. То, о чем я говорил в (43). На сервере приложений 1С оказывается подозрительно много накладных расходов для банальных операций.     | |||
| 59
    
        jk3 06.03.15✎ 23:54 | 
        (51) Интересно, при линейном увеличении количества параллельных запросов, время ответа растёт линейно, не замеряли?     | |||
| 60
    
        iv_iv_iv 07.03.15✎ 02:55 | 
        (50)
 Да нет конечно - но даже 300-600 запросов в секунду - очень большая проблема получить. И это вроде как считается немного. ------------ вам надо юзать sap - с вашей производительностью. | |||
| 61
    
        rphosts 07.03.15✎ 03:18 | 
        (28) +1 Post-запросы быстрее отрабатывают чем Web-сервисы     | |||
| 62
    
        Serginio1 07.03.15✎ 12:29 | ||||
| 63
    
        MadHead 07.03.15✎ 13:32 | 
        хотите скорости в данном вопросе, то вам на java. Или что бы все просто и из коробки, то на .net. Net конечно менее гибко и помедленнее, но если проект простой, то меньше времени на кофигурацию потратите     | |||
| 64
    
        MadHead 07.03.15✎ 13:34 | 
        интегрировать сейчас модно через rest full     | |||
| 65
    
        Serginio1 07.03.15✎ 14:48 | ||||
| 66
    
        Serginio1 07.03.15✎ 15:18 | 
        Можно сгенерить классы для Code First
 http://www.c-sharpcorner.com/UploadFile/ff2f08/entity-framework-code-first-data-annotations/ | |||
| 67
    
        Serginio1 07.03.15✎ 15:21 | ||||
| 68
    
        Serginio1 07.03.15✎ 15:53 | ||||
| 69
    
        Serginio1 07.03.15✎ 16:08 | ||||
| 70
    
        Serginio1 07.03.15✎ 16:14 | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |