|
Http-сервис обрабатывает 30 запросов и зависает | ☑ | ||
---|---|---|---|---|
0
ГдеСобака Зарыта
22.02.17
✎
17:12
|
8.3.9.1850, файловая база, iis 8.5.9600
Http-сервис принимает post-запросы. 30 запросов обрабатывает нормально, на 31-м зависает. Коннект http-сервиса висит в активных пользователях, обработчик http-метода не срабатывает, никаких ответов сервис не шлет. Количество обрабатываемых запросов от сеанса не зависит. Пробовал отправить 15 запросов в одном сеансе, ждал его закрытия и отправлял следующие запросы во втором сеансе. Зависает на 16-м. Рестарт iis, сброс коннекта http-сервиса к базе и тебе снова доступно 30 запросов. http-сервис в расширении конфигурации. ПовторноеИспользованиеСеансов - ИспользоватьАвтоматически default.vrd по умолчанию <service name="CRMIntegration" rootUrl="CRMIntegration" enable="true" reuseSessions="autouse" sessionMaxAge="20" poolSize="10" poolTimeout="5"/> Где собака зарыта? Поскажите |
|||
1
АнтонБ
22.02.17
✎
17:23
|
1c, не?
|
|||
2
ГдеСобака Зарыта
22.02.17
✎
17:27
|
В логе iis:
Рабочий процесс "1652", обслуживающий пул приложений "DefaultAppPool", не смог остановить канал прослушивателя для протокола "http" в отведенный интервал времени. Поле данных содержит номер ошибки. |
|||
3
Cyberhawk
22.02.17
✎
17:54
|
Подними диапазон портов у службы агента, видать стандартных 32 не хватает
|
|||
4
ГдеСобака Зарыта
22.02.17
✎
18:01
|
(3) А где это? можно подробнее? Для чайника
|
|||
5
Cyberhawk
22.02.17
✎
18:04
|
(4) В строке запуска процесса (службы) - в реестре Винды - увеличиваешь 1560:1591 до, например, 1560:1691 и проверяешь, что там у тебя с 31-м ХТТП-запросом будет. Не думаю, что это поможет, конечно, ведь должен быть пул для ХТТП-соединений, но всякое бывает
|
|||
6
ГдеСобака Зарыта
22.02.17
✎
18:37
|
(5) это ты про агент сервера 1С? У меня база файловая же.
|
|||
7
Cyberhawk
25.02.17
✎
17:17
|
(6) Да, про файловую. Самое время проверить на серверной базе. Ну или с пулом поиграться в файлах конфигурации веб-сервера (ИТС в помощь)
|
|||
8
Cyberhawk
25.02.17
✎
17:18
|
+(7) "Да, про файловую" = "Да, про серверную"
|
|||
9
ELEA26
26.02.17
✎
00:15
|
Http сервис оберни в попытка исключение, посмотри, может в процедуре где "залипает"...?
|
|||
10
ГдеСобака Зарыта
27.02.17
✎
11:59
|
В настройках пула приложений iis поставил перезапуск после выполнения 30-ти запросов. Вроде полет нормальный. 30 запросов, новый коннект к 1С и погнали дальше. Без шашечек, но едет.
Пробовал на 8.3.9.2170, переставлять iis - не помогало. (9) Нет, в процедуре не залипает. Создается коннект и остается висеть. Обработчик сервиса на исполнение не запускается. |
|||
11
ГдеСобака Зарыта
01.03.17
✎
15:31
|
Рано радовался, проблема осталась. Зависает оказывается на записи в БД.
Итак, Http сервис принимает пост-запросы и пишет данные в БД. На 332-м по счету вызове метода Записать(), не важно в каком по счету запросе и каком сеансе, 1С намертво зависает. Пробовал записывать документы и записи в РС. Во всех случаях зависает на 332-ом вызове Записать(). В исключение не вываливается, остановки по ошибке нет. При этом если после 330-ти итераций записи перезапустить пул приложений iis, то можно выполнить еще 331 запись. Выгрузить/загрузить, ЧекДБ, ТиИ делал. Вот код обработкчика сервиса: Функция ШаблонURL1Example(Запрос) СтрокаОтвет = "Успех!"; Для Сч = 1 по 300 Цикл Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); Запись.Период = Дата(2017, 1,1); Запись.Валюта = Константы.ВалютаРегламентированногоУчета.Получить(); Запись.Курс = 1; Запись.Кратность = 1; Попытка Запись.Записать(); Исключение СтрокаОтвет = "Запись не удалась. Попытка № "+Сч+". "+ОписаниеОшибки(); Прервать; КонецПопытки; КонецЦикла; Ответ = Новый HTTPСервисОтвет(200); Ответ.УстановитьТелоИзСтроки(СтрокаОтвет); Возврат Ответ; КонецФункции |
|||
12
ГдеСобака Зарыта
01.03.17
✎
15:34
|
Пробовал на другой машине, ситуация похожая, только итераций записи доступно чуть больше, но потом даже рестарт iis не спасает. Только перезагрузка компа.
Что за триал версия такая? |
|||
13
Cyberhawk
01.03.17
✎
15:34
|
(11) Через другой веб-сервер попробуй (ИИС / Апач)
|
|||
14
ГдеСобака Зарыта
01.03.17
✎
15:45
|
На Вин 7 iis 7.5 таже фигня.
|
|||
15
ELEA26
02.03.17
✎
17:08
|
(14) Все в транзакции делай. А то в таком адском цикле 2 запроса за запись дерутся. А с транзакцией (весь цикл) - по таймауту выпадать будет.
И попытка/исключение лучше так: Функция ШаблонURL1Example(Запрос) Попытка СтрокаОтвет = "Успех!"; СчСервиса = 0; Для Сч = 1 по 300 Цикл СчСервиса = Сч; Запись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи(); Запись.Период = Дата(2017, 1,1); Запись.Валюта = Константы.ВалютаРегламентированногоУчета.Получить(); Запись.Курс = 1; Запись.Кратность = 1; Запись.Записать(); КонецЦикла; Ответ = Новый HTTPСервисОтвет(200); Ответ.УстановитьТелоИзСтроки(СтрокаОтвет); Исключение СтрокаОтвет = "Запись не удалась. Попытка № "+СчСервиса+". "+ОписаниеОшибки(); Ответ = Новый HTTPСервисОтвет(500); Ответ.УстановитьТелоИзСтроки(СтрокаОтвет); КонецПопытки; Возврат Ответ; КонецФункции |
|||
16
ГдеСобака Зарыта
02.03.17
✎
17:28
|
Поднял на Апаче. Проблема ушла. тьфу-тьфу-тьфу.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |