Szukam dobrze przetestowanego skryptu bash (lub alternatywnego rozwiązania), aby to zrobić, aby uniknąć wyczerpania max_connection. Wiem, że walczy z objawami, ale naprawdę potrzebuję takiego skryptu jako rozwiązania krótkoterminowego.
linux
mysql
query
kill-process
alfish
źródło
źródło
Odpowiedzi:
sprawdź komendę pt-kill z zestawu narzędzi Percona .
i ... zacznij monitorować swój system - munin , kaktusy z lepszymi szablonami kaktusów dla mysql , wszystko, żebyś miał pojęcie, co się dzieje. dobrym pomysłem będzie także rejestrowanie powolnych zapytań mysql.
źródło
Jeśli masz MySQL 5.1, w którym lista procesów znajduje się w pliku INFORMACJE_SCHEMA, możesz to zrobić, aby wygenerować polecenia KILL QUERY zbiorczo z poziomu klienta mysql dla zapytania trwającego dłużej niż 20 minut (1200 sekund):
Możesz wykonać klauzule WHERE w polu INFO, aby wyszukać określone zapytanie, pole TIME w przypadku zapytań długo działających lub pole DB w przypadku określonej bazy danych.
Jeśli jesteś rootem @ localhost, powinieneś mieć pełne uprawnienia do uruchamiania tego w następujący sposób
Możesz to zrobić w następujący sposób:
Oto kolejna odmiana:
BTW Nie określiłeś myDB, ponieważ wyraźnie odczytałem z information_schema.processlist jako w pełni kwalifikowaną tablename.
Oto pokaz tego, co powinieneś zobaczyć. W tym przykładzie powtórzę polecenie KILL wszystkich procesów, których czas> 20000 sekund:
Robię tę technikę przez ostatnie 5 lat. W rzeczywistości przesłałem tę odpowiedź do DBA StackExchange w zeszłym roku i została zaakceptowana .
źródło
Znalazłem następujący kod-snipped tutaj :
Aktualizacja 14.01.2013: Anonimowo zasugerowano, że jest to potencjalnie niebezpieczne i może również zabić procesy replikacji. Korzystaj więc na własne ryzyko:
źródło
MySQL 5.7 i nowsze, możesz użyć zmiennej max_execution_time, aby zrobić to automatycznie dla wszystkich zapytań odczytu „SELECT”.
źródło
Nie spróbowałbym rozwiązań bash, jeśli lubisz czas pracy!
Jeśli masz dostęp do kodu, możesz faktycznie ustawić maksymalny czas wykonywania instrukcji SELECT przy użyciu metody opisanej tutaj :
W przeciwnym razie na serwerze:
/programming/415905/how-to-set-a-maximum-execution-time-for-a-mysql-query
Zainstaluj pt-kill:
Zrób migawkę swojej listy procesów:
Test pt-kill na migawce:
Upewnij się, że zasady dopasowania odpowiadają twojej sprawie. Powyższe zabije wszystkie instrukcje wykonania w ciągu 45 sekund. Gdy masz pewność, zmodyfikuj i uruchom tę komendę, aby wykonać instrukcję w odstępie 10 sekund:
źródło