Mysql
 sql >> Baza danych >  >> RDS >> Mysql

APPARENT DEADLOCK Tworzenie wątków awaryjnych dla nieprzypisanych zadań oczekujących

Z http://www.mchange.com/projects/c3p0/#other_ds_configuration

numHelperThreads i maxAdministrativeTaskTime pomagają skonfigurować zachowanie pul wątków DataSource. Domyślnie każdy DataSource ma tylko trzy skojarzone wątki pomocnicze. Jeśli wydajność wydaje się przeciągać przy dużym obciążeniu lub jeśli obserwujesz za pośrednictwem JMX lub bezpośredniej kontroli PooledDataSource, że liczba „oczekujących zadań” jest zwykle większa niż zero, spróbuj zwiększyć liczbę numHelperThreads. maxAdministrativeTaskTime może być przydatne dla użytkowników, którzy doświadczają zadań, które zawieszają się w nieskończoność i komunikaty „POZORNE ZATRZYMANIE”. (Więcej informacji w dodatku A).

maxAdministrativeTaskTime Domyślnie:0 sekund przed pulą wątków c3p0 spróbuje przerwać pozornie zawieszone zadanie. Rzadko przydatne. Wiele funkcji c3p0 nie jest wykonywanych przez wątki klienta, ale asynchronicznie przez wewnętrzną pulę wątków. Asynchronia c3p0 bezpośrednio zwiększa wydajność klienta i minimalizuje czas utrzymywania krytycznych blokad, zapewniając, że powolne operacje jdbc są wykonywane w wątkach bez blokad. Jeśli jednak niektóre z tych zadań zawieszą się, to znaczy nie powiodą się ani nie zakończą niepowodzeniem z powodu wyjątku przez dłuższy czas, pula wątków c3p0 może się wyczerpać, a zadania administracyjne zostaną utworzone. Jeśli zadania są po prostu powolne, najlepszym sposobem rozwiązania problemu jest zwiększenie liczby wątków za pomocą numHelperThreads . Ale jeśli zadania czasami zawieszają się w nieskończoność, możesz użyć tego parametru, aby wymusić wywołanie metody interrupt() wątku zadania, jeśli zadanie przekracza ustalony limit czasu. [c3p0 w końcu i tak odzyska sprawność po zawieszonych zadaniach, sygnalizując „POZORNE ZATRZYMANIE” (zobaczysz to jako ostrzeżenie w dziennikach), zastępując wątki zadań puli wątków i przerywając () oryginalne wątki. Jednak umożliwienie puli przejścia w pozorny zakleszczenie, a następnie jej odzyskanie, oznacza, że ​​w niektórych okresach wydajność c3p0 będzie osłabiona. Jeśli więc widzisz te komunikaty, zwiększenie liczby wątkówHelperThreads i ustawienie maxAdministrativeTaskTime może pomóc . Wartość maxAdministrativeTaskTime powinna być na tyle duża, aby każda rozsądna próba uzyskania połączenia z bazy danych, przetestowania połączenia lub dwie próby zniszczenia połączenia zakończyły się powodzeniem lub niepowodzeniem w wyznaczonym czasie. Zero (wartość domyślna) oznacza, że ​​zadania nigdy nie są przerywane, co w większości przypadków jest najlepszą i najbezpieczniejszą zasadą. Jeśli zadania są po prostu powolne, przydziel więcej wątków. Jeśli zadania zawieszają się w nieskończoność, spróbuj dowiedzieć się, dlaczego, i być może ustawienie maxAdministrativeTaskTime może pomóc w międzyczasie.

The default is 3 for numHelperThreads , increase this to 8-10 

setting maxAdministrativeTaskTime will help 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyniki w promieniu - Optymalizacja powolnego zapytania MySQL

  2. PHP/Apache:błąd krytyczny PHP:wywołanie niezdefiniowanej funkcji mysql_connect()

  3. MySQL Wybierz pierwszy dzień roku i miesiąca

  4. Jak naprawić serializowany ciąg, który został uszkodzony przez nieprawidłową długość licznika bajtów?

  5. Konfiguracja mysql5 Macports pod Snow Leopard