1С BACKEND ДЛЯ WEB? ДА ВЫ СМЕЕТЕСЬ.
- Опубликовано Илья Низамов
- Разделы Blog
- Дата 05.05.2020
- Комментарии 1 комментарий
Всем привет! С вами Низамов Илья! И сегодня я хотел поговорить о производительности 1С в качестве backend.
Кто-то делает сайты на 1С, кто-то ведет обмены через http сервисы, особенно актуально для мобильных приложений 1С. И понять заранее сколько одновременных пользователей потянет 1С зачастую невозможно. Если же проект коммерческий и подразумевает значительное расширение в будущем, то логичнее будет протестировать его сразу.
В этом нам поможет нагрузочный тест Apache benchmark. Я проведу тестирование http сервиса 1С на популярном web сервере для 1С, Apache версии 2.4, с настройками по умолчанию, так сказать из коробки. Потом сделаю тест http сервиса 1С при работе через автономный сервер. Сравним все это с доступом к обычному сайту и http сервису, написанному на node.js.
Все тесты проводятся на локальном компьютере, в реальных проектах, я бы рекомендовал тестировать на реальном оборудовании и интернет каналах.
Тест входит в стандартную установку Apache. Ниже приведу команды тестирования.
Тест Apache локальный сайт
У меня стоит достаточно простой локальный сайт, без php, просто html страничка.
Начнем с команды
ab -c 100 -n 10000 http://post24/
Тест создаст 100 конкурентных запросов и выполнит 10 000 GET запросов к нашему сайту.
По результату, на моем компьютере удалось выполнить максимум 260 параллельных запросов.
Тест HTTP сервиса 1С Apache
HTTP сервис 1С тоже простой и на GET запрос отдает JSON.
Команда:
ab -c 100 -n 10000 http://localhost/httpsrv/hs/ex/product
По результату, на моем компьютере удалось выполнить максимум 260 параллельных запросов.
Как мне кажется, тут проблема именно в настройках самого web сервера Apache.
Тест HTTP сервиса 1С автономный сервер
Запускаем автономный сервер 1С
“C:\Program Files\1cv8\8.3.16.1148\bin\ibsrv” –db-path=”Z:\1S\03 Обучение\HTTPTEST\Server” –name=serv1 –address=10.10.1.10
И опять тестируем
ab -c 100 -n 10000 http://10.10.1.10:8314/hs/ex/product
Автономный сервер выдержал 15 000 параллельных запросов и за тест было произведено 30 000 get запросов.
Тест HTTP сервиса на Node.js
Ниже код http сервиса на node.js, работать данный сервис будет на 3000 порту. Запускается сервис командой
node z:\www\testnode\test.js
Тестируем командой:
ab -c 100 -n 10000 http://localhost:3000/
На моем компьютере, данный сервис так же выдержал максимально 15 000 параллельных соединений и 30 000 запросов.
Так как результаты схожи с автономным сервером 1С, то возможно тут уже ограничения моей операционной системы.
var http = require("http");
http.createServer(function(request, response){
var body = []; // объявление массива
body[0] = {
UUID: "86fabe85-8300-11ea-847a-3085a93c8c97",
Name: "Товар 1"
}
body[1] = {
UUID: "86fabe85-8300-11ea-847a-3085a93c8c97",
Name: "Товар 2"
}
body[2] = {
UUID: "86fabe85-8300-11ea-847a-3085a93c8c97",
Name: "Товар 3"
}
body[3] = {
UUID: "86fabe85-8300-11ea-847a-3085a93c8c97",
Name: "Товар 4"
}
// Устанавливаем заголовки
response.setHeader('Content-Type', 'application/json');
response.end(JSON.stringify(body));
}).listen(3000);
Что хочется сказать в итоге.
1. Apache из коробки в операционной системе windows работает не очень производительно и для достижения хороших результатов его надо тюнинговать. Интересно было бы протестировать его на linux.
2. Жаль, что 1С из коробки не поддерживает web сервер nginx, думаю результаты там были бы очень неплохими.
3. Я не протестировал работу сервиса на web сервере windows IIS, так как банально не использую его в работе, но думаю, что вы сами отлично теперь с этим справитесь. Можете написать в комментариях о результатах своих тестов.
4. Автономный сервер 1С работает просто отлично, не уступает http сервису на node.js, а это очень производительный сервер.
Надеюсь теперь в ваших руках есть полезный инструмент для нагрузочного тестирования http сервисов 1С, и он будет вам очень полезен. На этом все, всем удачи, пока!
Метка:WEB
1 Комментарий
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me. https://accounts.binance.com/bg/register?ref=IQY5TET4