Błędy pamięci dla limitu zatrzymania pobierania
Błąd braku pamięci w pamięci wirtualnej pamięci wirtualnej języka Java™ jest spowodowany operacją, która pobiera i tworzy zbyt wiele obiektów w jednym zestawie MBO ( Maximo ® business object -MBO). Ten typ błędów może rozłączyć wszystkich użytkowników z serwerem. Do skonfigurowania limitu pobierania, który może zapobiec błędom braku pamięci, można używać właściwości systemowych mxe.db.fetch.
Właściwości limitu zatrzymania pobierania służą do ustawiania górnego limitu liczby obiektów, które są pobierane z bazy danych i tworzone na serwerze w postaci jednego zestawu. Użytkownik może ustawić różne limity dla różnych typów obiektów. Po osiągnięciu górnego limitu zgłaszany jest wyjątek, a proces jest zatrzymywany. Można następnie zmniejszyć liczbę obiektów za pomocą filtrów lub zmienić operację, aby zapobiec pobieraniu z bazy danych zbyt dużej liczby obiektów.
Limit zatrzymania pobierania jest włączany domyślnie z wartością domyślną 5000 dla wszystkich obiektów. Jeśli limit zatrzymania pobierania zostanie osiągnięty i zgłoszony zostanie wyjątek w czasie operacji interfejsu użytkownika, użytkownikowi zostanie zazwyczaj wyświetlony komunikat o błędzie. W zależności od sposobu, w jaki logika zewnętrzna jest zaimplementowana, ten komunikat może zostać opakowany przez inny komunikat bądź nie zostać wyświetlony. Jednak błąd jest zawsze rejestrowany na serwerze.
Scenariusze wystąpienia błędów limitu zatrzymania pobierania
Duża liczba pobrań, która powoduje błędy ma miejsce zazwyczaj w dwóch przypadkach:
- Gdy użytkownik zastosuje czynność do dużego zestawu wynikowego. Zestaw wynikowy zostanie pobrany bez odpowiedniego filtrowania. Ten błąd może pojawić się, gdy użytkownik uruchomi przez przypadek czynność wyświetlenia listy bądź uprawniona operacja załaduje zbyt dużo obiektów.
- Gdy operacja wbudowana w czynność użytkownik odczyta dużą liczbę obiektów, a danych nie będzie można filtrować.
Czynności powodujące wystąpienie błędów limitu zatrzymania pobierania
Dokonaj analizy danych i wskaż operacje, które powodują błąd. Błąd można spróbować naprawić poprzez filtrowanie danych lub przez podział docelowej czynności na mniejsze zadania. Jeśli błędu nie można naprawić, administrator powinien dostosować system w jeden z następujących sposobów:
- Zwiększ limit pobierania dla konkretnego obiektu, jeśli użycie wyższego limitu pozostaje bezpieczne. Jeśli użytkownik nie chce, aby ta wyższa liczba wpływała na innych użytkowników, należy wywołać metodę MboSet.setLogLargFetchResultDisabled(true) dla zestawu MBO.
- Popraw dane, aby uniknąć przetwarzania tak dużego zestawu danych.
- Użyj zestawów MBO, które można odrzucić, aby zapobiec załadowaniu wszystkich pobieranych obiektów do pamięci.
- Przenieś operację do zadania Cron i zaplanuj uruchomienie zadania Cron w czasie mniejszego obciążenia lub na innym serwerze.
- Zmodyfikuj proces tak, aby pobierać mniej obiektów.