Napraw rozłączanie sesji edycji dokumentów CODE po 10 minutach

Jeśli dokument Collabora Online Development Edition (CODE) otwiera się normalnie, edycje działają, a następnie edytor rozłącza się po prawie dokładnie 10 minutach, zacznij od ścieżki WebSocket między przeglądarką a CODE. Powtarzalny limit 600 sekund znacznie bardziej sugeruje przekroczenie limitu czasu przez odwrotny serwer proxy, kontroler wejściowy, moduł równoważenia obciążenia lub zaporę sieciową niż udokumentowane domyślne liczniki bezczynności w CODE.

To rozróżnienie ma znaczenie, ponieważ zmiana ustawień bezczynności w CODE może ukryć prawdziwy problem bez naprawy połączenia obsługującego ruch edycyjny. Aktualny szablon konfiguracji Collabora dokumentuje 15-minutowy limit bezczynności dla każdego widoku i godzinę bezczynności dokumentu, a nie 10-minutowy limit sesji edycyjnych. Zobacz szablon coolwsd.xml . Jeśli użytkownicy aktywnie piszą, gdy następuje rozłączenie, ustawienie CODE tylko dla bezczynności jest jeszcze słabszym wytłumaczeniem.

Co zazwyczaj oznacza 10-minutowa rozłąka

Zweryfikowano: Opublikowany przykład Nginx firmy Collabora używa nagłówków aktualizacji WebSocket oraz typu long proxy_read_timeout 36000sdla głównego WebSocket. Sam Nginx dokumentuje, że połączenia WebSocket przez proxy są zamykane, gdy w skonfigurowanym czasie odczytu nie zostaną odebrane żadne dane, a jego domyślna proxy_read_timeoutwartość to 60 sekund. Zapoznaj się z podręcznikiem Collabora Online SDK oraz dokumentacją proxy Nginx WebSocket .

Zależne od środowiska: 600-sekundowy limit czasu może zostać wprowadzony przez inną warstwę proxy, nawet jeśli host Nginx przed CODE wygląda poprawnie. Typowe miejsca to Kubernetes Ingress, HAProxy, system równoważenia obciążenia w chmurze, WAF lub odwrotny serwer proxy upstream. Dokładny limit czasu i klucz konfiguracji zależą od tego komponentu.

Nie dowodzi tego sam objaw: „rozłącza się po 10 minutach” nie dowodzi, że odpowiedzialny jest komponent Nginx. Przechwyć uszkodzony WebSocket i skoreluj jego znacznik czasu z logami proxy i CODE, zanim zmienisz kilka warstw jednocześnie.

Działanie: odtwórz błąd przy użyciu narzędzi programistycznych przeglądarki i zapisz dokładny czas trwania żądania WebSocket.

Narzędzia programistyczne przeglądarki Panel sieciowy przefiltrowany do ruchu WebSocket, pokazujący edycję błędu WebSocket po około 10 minutach
Użyj panelu Sieć w przeglądarce, aby sprawdzić, czy edycja WebSocket kończy się w powtarzalnym momencie. To przykładowy widok diagnostyczny, a nie przechwycona sesja produkcyjna.

Krok 1: Sprawdź, czy rzeczywiście ginie WebSocket

Otwórz dokument, a następnie otwórz narzędzia programistyczne przeglądarki i przejdź do panelu Sieć. Filtruj ruch WebSocket. Ruch związany z edycją kodu zazwyczaj obejmuje WebSocket pod ścieżką /cool/. Pozostaw dokument otwarty po wystąpieniu awarii.

Po rozłączeniu sesji należy sprawdzić żądanie WebSocket. Najbardziej przydatne informacje to czas jego trwania, moment zamknięcia, status HTTP podczas początkowej aktualizacji oraz to, czy przeglądarka zgłasza błąd sieciowy. Czysty inicjał, 101 Switching Protocolsa następnie zamknięcie po około 600 sekundach wskazuje na czas życia połączenia lub zasadę braku aktywności gdzieś na ścieżce.

Jeśli WebSocket nie aktualizuje się pomyślnie, nie jest to problem „10-minutowego limitu czasu”; najpierw należy naprawić routing i nagłówki WebSocket. Jeśli WebSocket pozostaje połączony, podczas gdy edytor wyświetla błąd przechowywania lub zapisu, należy zamiast tego sprawdzić ścieżkę WOPI/przechowywania.

Działanie: zapisz czas rozpoczęcia i czas rozłączenia, a następnie porównaj te znaczniki czasu z dziennikami dostępu/błędów odwrotnego serwera proxy i kontenerem CODE lub dziennikami usług.

Krok 2: Sprawdź regułę odwrotnego proxy CODE przed zmianą wartości bezczynności CODE

W przypadku Nginx najważniejsze jest, aby lokalizacja WebSocket przekazała nagłówki aktualizacji i miała odpowiednio długi limit czasu odczytu. Podręcznik SDK Collabora przedstawia ten wzorzec dla głównego WebSocket:

location ~ ^/cool/(.*)/ws$ {
    proxy_pass https://127.0.0.1:9980;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_read_timeout 36000s;
}

Jeśli protokół TLS jest zakończony na serwerze Nginx, a CODE celowo obsługuje za nim zwykły protokół HTTP, schemat nadrzędny może być http://wyłączony. Nie kopiuj schematu bezmyślnie: musi on być zgodny z konfiguracją instancji CODE.

Jednym z powszechnych nieporozumień jest to, że proxy_connect_timeoutkontroluje czas życia już ustanowionej sesji edycji. Nie kontroluje; działa podczas nawiązywania połączenia z serwerem nadrzędnym. Ustawieniem najbardziej bezpośrednio istotnym dla ustanowionego serwera proxy WebSocket z okresami braku danych nadrzędnych jest proxy_read_timeout. Nginx dokumentuje to zachowanie w dokumentacji modułu proxy HTTP .

Działanie: zlokalizuj rzeczywisty blok Nginx, który odpowiada adresowi URL WebSocket CODE i sprawdź, czy limit czasu jest ustawiony w tym miejscu, a nie tylko w niezwiązanym pliku location.

Edytor kodu pokazujący blok serwera Nginx z nagłówkami aktualizacji WebSocket i wyróżnionym długim limitem czasu odczytu serwera proxy
Ustaw długi limit czasu dla reguły, która faktycznie obsługuje ruch CODE WebSocket. Dokładny protokół i ścieżka nadrzędna muszą być zgodne z wdrożeniem.

Krok 3: Uwzględnij zmiany w serwerze proxy CODE 26.04

W październiku 2026 roku aktualne informacje o wydaniu CODE 26.04 firmy Collabora wymieniają wersję CODE 26.04.4.2, wydaną 24 września 2026 roku. Seria 26.04 wprowadziła bardziej kompaktowy adres URL WebSocket. Firma Collabora zauważa, że ​​istniejące konfiguracje serwerów proxy mogą wymagać aktualizacji; w późniejszych kompilacjach 26.04 CODE może powrócić do starszego adresu URL i generować ostrzeżenie audytu, gdy serwer proxy nie zostanie zaktualizowany. Użytkownicy Apache2 otrzymali wyraźne polecenie aktualizacji reguły ProxyPass podczas wprowadzania wersji 26.04. Zobacz oficjalne informacje o wydaniu CODE 26.04 .

Nie oznacza to, że każde 10-minutowe rozłączenie jest spowodowane zmianą kompaktowego adresu URL. Oznacza to, że 26.04 należy zweryfikować reguły odwrotnego proxy z dokumentacją wersji, z której faktycznie korzystasz, zwłaszcza jeśli problem pojawił się po aktualizacji.

Działanie: sprawdź wersję KODU w sekcji „Informacje o produkcie” lub w tagu obrazu kontenera, a następnie porównaj konfigurację serwera proxy z aktualnymi wytycznymi dotyczącymi serwera proxy Collabora. Nie zakładaj, że reguła skopiowana ze starszego wdrożenia 24.04 nadal jest idealna.

Krok 4: Sprawdź Kubernetes Ingress, HAProxy, Apache i inne middleboxy

Jeśli Nginx znajduje się tylko o jedną warstwę przed CODE, wydłużenie jego limitu czasu może nie wystarczyć. W przypadku Kubernetesa korzystającego z ingress-nginx, dokumentacja projektu zawiera adnotacje per-Ingress o nazwach nginx.ingress.kubernetes.io/proxy-read-timeouti nginx.ingress.kubernetes.io/proxy-send-timeout. Wytyczne dotyczące WebSocket zalecają wartości dłuższe niż jedna godzina w przypadku połączeń o długim czasie trwania. Zobacz oficjalne odniesienia do adnotacji Ingress-Nginx i notatki dotyczące WebSocket .

metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"

W przypadku HAProxy przykład SDK Collabora używa długiego limitu czasu tunelu dla ruchu w stylu WebSocket. W przypadku Apache, limit czasu ogólnego serwera proxy jest kontrolowany przez ProxyTimeout, ale CODE 26.04 wymaga również uwzględnienia bieżącego wzorca WebSocket ProxyPass. Własna dokumentacja Apache'a, mod_proxy, wyjaśnia, co ProxyTimeoutkontroluje.

Działanie: narysuj ścieżkę połączenia z przeglądarki do CODE i sprawdź każdy przeskok. Limit 600 sekund na każdym przeskoku może nadal zakończyć sesję.

Krok 5: Zweryfikuj i bezpiecznie przeładuj serwer proxy

Po edycji konfiguracji Nginx przetestuj ją przed ponownym załadowaniem:

sudo nginx -t
sudo systemctl reload nginx

Jeśli Nginx działa w kontenerze, zamiast zakładać systemctljego istnienie, należy użyć równoważnej procedury walidacji i ponownego ładowania uwzględniającej kontener. Ważne jest sprawdzenie składni przed zastąpieniem bieżącej konfiguracji.

Działanie: zmieniaj warstwy pojedynczo, zapisz poprzednią wartość, sprawdź poprawność konfiguracji, a następnie ponownie przetestuj ten sam przepływ pracy dokumentu.

Okno terminala pokazujące walidację składni konfiguracji Nginx, po której następuje pomyślne polecenie ponownego załadowania Nginx
Przed ponownym załadowaniem sprawdź poprawność konfiguracji odwrotnego serwera proxy, aby naprawa limitu czasu nie spowodowała oddzielnego problemu z dostępnością.

Krok 6: Udowodnij poprawność rozwiązania za pomocą testu dłuższego niż poprzedni próg

Nie przerywaj testowania po ponownym otwarciu dokumentu. Pozostaw tę samą sesję edycji połączoną znacznie dłużej niż poprzedni punkt awarii. W przypadku 10-minutowego objawu, 20-30-minutowe okno walidacyjne jest bardziej przydatne niż dwuminutowy test dymowy. Pozostaw panel Sieć otwarty i od czasu do czasu wprowadzaj zmiany, aby odróżnić aktywną edycję od całkowicie bezczynnej karty.

Dobry wynik ma trzy oznaki: połączenie WebSocket pozostaje nawiązane dłużej niż 10 minut, edytor nadal akceptuje edycje bez monitów o ponowne połączenie i w dziennikach pośredniczących lub CODE nie pojawia się żaden komunikat o przekroczeniu limitu czasu.

Jeśli połączenie nadal zostaje zamknięte dokładnie 10 minut po zwiększeniu limitu czasu najbliższego serwera proxy, jest to przydatny dowód na to, że inny przeskok nadal ma politykę 600 sekund.

Działanie: kontynuuj śledzenie na zewnątrz, aż do momentu zidentyfikowania komponentu, który emituje zamknięcie lub przekroczenie limitu czasu.

Panel sieciowy narzędzi programistycznych przeglądarki pokazujący WebSocket ze statusem 101 pozostający w połączeniu przez ponad 12 minut
Po wprowadzeniu zmiany należy sprawdzić, czy protokół WebSocket pozostaje aktywny dłużej niż poprzednio przez 10 minut. Podany tutaj czas trwania ma charakter poglądowy.

Nie należy mylić liczników bezczynności CODE z 10-minutowym odcięciem sieci

Szablon konfiguracji CODE w górnym strumieniu obecnie podaje per_view.idle_timeout_secs900 sekund, czyli 15 minut. W jego opisie jest napisane, że widok jest przyciemniony, a aktualizacje zatrzymują się, gdy użytkownik jest nieaktywny. idle_timeout_secsDomyślna wartość na poziomie dokumentu to 3600 sekund, czyli jedna godzina, zanim bezczynny dokument zostanie usunięty.

Warto sprawdzić te wartości, jeśli Twoje zachowanie jest z nimi zgodne, ale żadna z domyślnych wartości nie wyjaśnia dokładnego rozłączenia po 600 sekundach. Jeśli ktoś wcześniej dostosował coolwsd.xmlzmienne środowiskowe, wartości Helm lub parametry kontenera, Twoje wdrożenie może różnić się od domyślnych.

Działanie: sprawdź efektywną konfigurację CODE dopiero po ustaleniu, czy awaria dotyczy poziomu sieci, czy aplikacji. Nie zwiększaj każdej wartości bezczynności jako pierwszej reakcji.

Szybka tabela diagnostyczna

Obserwowane zachowanieNajbardziej przydatne następne sprawdzenieCzego nie zakładać
Protokół WebSocket zamyka się po około 600 sekundach, gdy użytkownik jest aktywnyPrzekroczenie limitu czasu serwera proxy, ruchu przychodzącego, modułu równoważenia obciążenia lub zapory sieciowejTen KOD ma wbudowany 10-minutowy limit edytora
WebSocket nigdy nie osiąga protokołu HTTP 101Aktualizacja nagłówków, routingu, schematu upstream TLS, bieżących ścieżek proxy 26.04Już samo wydłużenie czasu przestoju pomoże
Awaria zaczęła się po aktualizacji do CODE 26.04Porównaj zasady proxy z obecnymi wytycznymi 26.04Że stara konfiguracja proxy 24.04 jest automatycznie równoważna
Dotyczy to tylko kart bezczynnych i działających w tleKOD zachowanie bezczynności na widok i pośrednie limity czasu bezczynnościŻe awarie sesji aktywnej i sesji bezczynności mają tę samą przyczynę
WebSocket pozostaje otwarty, ale zapisywanie nie powiodło sięDzienniki WOPI/przechowywania i żądania zapisuŻe przyczyną jest przekroczenie limitu czasu WebSocket

Podsumowanie

W przypadku sesji edycji CODE, która rozłącza się po powtarzalnych 10 minutach, najskuteczniejsza sekwencja to: potwierdzenie awarii WebSocket, weryfikacja odpowiedniej reguły odwrotnego proxy, sprawdzenie każdego przekroczenia limitu czasu pośrednika, uwzględnienie zmian ścieżki proxy CODE 26.04, bezpieczne ponowne załadowanie i przetestowanie poza starą granicą. Ustawienia bezczynności CODE należy zmieniać tylko wtedy, gdy zaobserwowane zachowanie i efektywna konfiguracja faktycznie na to wskazują.

Jeśli czas awarii nie jest powtarzalny lub jeśli logi CODE pokazują awarie, zakończenie procesu, obciążenie pamięci lub błędy WOPI w tym samym momencie, przestań traktować to jako zwykły przypadek przekroczenia limitu czasu. Takie objawy wymagają innej diagnozy.

Zostaw komentarz

Jak przenieść obraz w programie Microsoft Word

Jak przenieść obraz w programie Microsoft Word

Dowiedz się, jak przeciągać obraz w programie Word, wybierać opcje zawijania tekstu, zachowywać go w akapicie lub mocować na stronie oraz rozwiązywać problemy z obrazami, których nie można przenieść.

Jak wstawić pole wyboru w programie Excel: dwie proste metody

Jak wstawić pole wyboru w programie Excel: dwie proste metody

Dowiedz się, jak wstawić pole wyboru w programie Excel za pomocą narzędzia w komórce, zliczyć zaznaczone elementy za pomocą formuł lub dodać powiązany formant formularza w starszych wersjach programu na komputery stacjonarne.

Jak automatycznie wypełniać litery w programie Excel: od A do Z i dalej

Jak automatycznie wypełniać litery w programie Excel: od A do Z i dalej

Generuj litery od A do Z, małe litery lub etykiety powyżej Z w programie Excel za pomocą formuły z uchwytem wypełniania, SEKWENCJI lub wielokrotnego użytku listy niestandardowej.

Jak przekreślić tekst w programie Excel: skróty i metody krok po kroku

Jak przekreślić tekst w programie Excel: skróty i metody krok po kroku

Dowiedz się, jak przekreślać wiersze w programie Excel w systemie Windows, na komputerze Mac i w przeglądarce, formatować część komórki i usuwać wiersze bez usuwania ich wartości.

Czym jest Microsoft Access? Jak działają jego narzędzia bazodanowe

Czym jest Microsoft Access? Jak działają jego narzędzia bazodanowe

Microsoft Access to aplikacja bazy danych systemu Windows do przechowywania powiązanych rekordów, tworzenia zapytań, tworzenia formularzy wprowadzania danych i generowania raportów. Dowiedz się, jak działa i kiedy się sprawdza.

Importowanie i eksportowanie danych z programu Office Outlook 2010: przenoszenie danych za pomocą pliku PST

Importowanie i eksportowanie danych z programu Office Outlook 2010: przenoszenie danych za pomocą pliku PST

Dowiedz się, jak zaimportować plik PST do programu Outlook 2010 lub wyeksportować pocztę, kontakty, kalendarz i zadania. Postępuj zgodnie z odpowiednimi menu i unikaj pominiętych folderów lub duplikatów.

Zmiana wysokości i szerokości linii siatki w programie Word 2010

Zmiana wysokości i szerokości linii siatki w programie Word 2010

Dowiedz się, jak dostosować wysokość i szerokość linii siatki w programie Word 2010, zmienić widoczną częstotliwość linii oraz ustawić odstępy między liniami siatki w pionie i w poziomie.

Jak wstawić aktywną stronę internetową do slajdu programu PowerPoint

Jak wstawić aktywną stronę internetową do slajdu programu PowerPoint

Za pomocą dodatku LiveWeb możesz umieścić witrynę internetową na slajdzie programu PowerPoint, ustawić jej rozmiar i sposób odświeżania oraz sprawdzić zgodność przed prezentacją.

Odzyskiwanie hasła PST programu Outlook za pomocą jądra Nucleus

Odzyskiwanie hasła PST programu Outlook za pomocą jądra Nucleus

Odzyskaj zapomniane hasło PST programu Outlook, korzystając z bieżących instrukcji Kernela, obejmujących m.in. identyfikację właściwego pliku, wykonanie kopii zapasowej i sprawdzenie ograniczeń narzędzia.

Dodaj święta narodowe do kalendarza Outlook

Dodaj święta narodowe do kalendarza Outlook

Dodaj święta krajowe w nowym Outlooku, Outlooku w przeglądarce lub klasycznej wersji Outlooka. Dowiedz się, jak unikać duplikatów wydarzeń i sprawdzać, czy nie brakuje dat z lat 2026–2027.