На некоторых видах прямых соединений из дома на нужные мне сервера NetWeaver я часто сталкиваюсь с ошибкой:
WSAECONNRESET: Connection reset by peer
Она возникает примерно через минуту, если ничего не делать в SAP GUI. Все окна вылетают, блокировки не снимаются, несохранённый результат теряется. Это может быть очень неприятно и обидно.
Кто виноват и что делать?
По моим представлениям корень ошибки находится в сетевом окружении, это такой тайный способ экономить. Поддержание соединения требует ресурсов, если в сети происходит чехарда, то подвисшими соедиениями можно просто забить сеть. Поэтому срабатывает примитивный алгоритм по отстрелу неиспользуемых соединений. Вполне вероятно, что этим занимается мой роутер. Казнить нельзя, помиловать.
В целом, для повседневной работы такое поведение безопасно, так как многие протоколы не парятся по этому поводу, а просто устанавливают соединение заново, или же имеют встроенные команды типа NOOP для создания массовки, пока ничего реального не происходит.
Почему-то такой инструмент как SAP GUI оказывается бессилен перед такой ситуацией. Поглядел в настройки роутера, там не нашел ничего похожего, что помогло бы побороть проблему. Посмотрел в настройки SAP GUI, там тоже не нашел ничего путного.
Попробовал поработать через VPN, но почему-то это мне также не помогло.
Если проблему не выходит решить технологично, то на помощь приходит костыль, неразлучный спутник программиста. В качестве вспомогательного средства я использую простую программку:
1 2 3 4 5 6 7 8 9 |
PROGRAM z_keepalive. DO 1000000 TIMES. cl_progress_indicator=>progress_indicate( EXPORTING i_text = 'Keeping alive: &1' i_msgv1 = sy-uzeit ). WAIT UP TO 10 SECONDS. ENDDO. |
Смысл простой: каждые 10 секунд необходимо слать сигнал по маршруту Сервер=>Клиент, что в некотором роде является эквивалентом команды NOOP. Канал оживляется, и в очередь на отстрел не попадает.
Основные недостатки:
- Дополнительные телодвижения
- Занимает окно
- Не действует на редактор экранов
PS. Между делом похожая напасть может происходить и в SSH.
Добрый день. А не подскажете, Где этот код прописывается?
Просто у нас на работе тоже сап, и от бездействия постоянно вылетает. Внутренняя Служба поддержки ничем не помогает.
Просто отдельная Z-программа с привязкой Z-транзакции.
Запускается в отдельном окне и по сути является зависшим отчётом с бесконечным циклом. Но пока он висит — остальное не падает.
Всего в рамках одной сесии можно открыть до шести окон (при стандартных настройках сервера).