|   |   | 
| 
 | 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 | 
        Поднял на Апаче. Проблема ушла. тьфу-тьфу-тьфу.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |