netstat connecties killen

Pagina: 1
Acties:

  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 08:27

Erhnam

het Hardware-Hondje :]

Topicstarter
Op een van mijn machines worden bepaalde mysql connecties niet netjes afgesloten, met als gevolg dat mysql na een bepaalde tijd vol loopt. Dit kan ik natuurlijk rekken door het aantal maximum connecties te verhogen maar dit lost het probleem niet direct op. Wat ik mij afvroeg:

netstat -eap | grep mysql

unix 3 [ ] STREAM CONNECTED 357205 3844/ /var/lib/mysql/mysql.sock
unix 3 [ ] STREAM CONNECTED 356978 3844/ /var/lib/mysql/mysql.sock
unix 3 [ ] STREAM CONNECTED 350510 3844/ /var/lib/mysql/mysql.sock
unix 3 [ ] STREAM CONNECTED 340231 3844/ /var/lib/mysql/mysql.sock
unix 3 [ ] STREAM CONNECTED 340225 3844/ /var/lib/mysql/mysql.sock
enz.


Is het mogelijk deze openstaande connecties te killen of te sluiten waardoor er weer plaats gemaakt kan worden voor nieuwe connecties?

http://www.xbmcfreak.nl/


  • andreict
  • Registratie: April 2004
  • Laatst online: 12-12-2025
zoek eens naar tcpview van sysinternals

hier kan je zien welke connecties nog open staan en je kan ze eventueel killen.

8)7 verkeerde gelezen :(

[ Voor 12% gewijzigd door andreict op 03-05-2005 15:37 ]


  • 0xDEADBEEF
  • Registratie: December 2003
  • Niet online
[code]sudo lsof -i :$port[/] ? En de bijbehorende manpage ;)

[ Voor 5% gewijzigd door 0xDEADBEEF op 03-05-2005 15:43 . Reden: Niet echt, dus ]

"Religion is an insult to human dignity. With or without it you would have good people doing good things and evil people doing evil things. But for good people to do evil things, that takes religion." - Steven Weinberg


  • IceM
  • Registratie: Juni 2003
  • Laatst online: 11:04
Is het geen mogelijkheid om de connectie timeout wat lager te zetten? Of verplicht gebruik te maken van "persistant connections" in plaats van normale connecties (ik heb geen idee of dit ergens vast te leggen is ...)? Met persistant connecties wordt er gebruik gemaakt van openstaande connecties die niet meer gebruikt worden (en dus wachten totdat hun timeout verstreken is om daarna af te sluiten). Lijkt me een iets nettere oplossing, alleen weet ik dus niet of dit in te stellen is.

Voor een voorbeeld in php: mysql_pconnect()

[ Voor 12% gewijzigd door IceM op 03-05-2005 15:40 ]

...


  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 08:27

Erhnam

het Hardware-Hondje :]

Topicstarter
Ik heb dit geprobeerd te veranderen het enige probleem is dat plesk (het cms pakket) dan over zijn nek gaat. Als de config file maar 1 regel afwijkt van het default script dan starten de modules niet meer op. Ik zou daarom graag een script willen schrijven wat bv ieder uur bepaalde connecties 'opruimt' met lsof heb ik dit geprobeerd maar dit wordt volgens mij ergens anders voor gebruikt.

Is het anders mogelijk te achterhalen welke scripten een beroep doen op mysql?

[ Voor 23% gewijzigd door Erhnam op 03-05-2005 16:02 ]

http://www.xbmcfreak.nl/


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Je kunt met mysqladmin de processlist opvragen
code:
1
2
3
4
5
6
7
8
9
$> mysqladmin processlist -p
Enter password: *******
+-------+------+-----------+----+---------+------+------------------+------------------+
| Id    | User | Host      | db | Command | Time | State            | Info             |
+-------+------+-----------+----+---------+------+------------------+------------------+
| 27165 | root | localhost |    | Connect | 313  | Reading from net |                  |
| 27166 | root | localhost |    | Connect | 304  | Reading from net |                  |
| 27179 | root | localhost |    | Query   | 0    |                  | show processlist |
+-------+------+-----------+----+---------+------+------------------+------------------+

Door daar awk en grep op los te laten kun je de connection id en de idle time eruit halen:
code:
1
2
3
4
$> mysqladmin processlist -p | awk '{print $2" "$9" "$11}' | grep Connect
Enter password: ********
27165 Connect 378
27166 Connect 369

En door daar mysqladmin kill <processnummer> op los te laten kun je de individuele connecties killen. Het is misschien handig om de idle tijd te gebruiken om er voor te zorgen dat je geen actieve connecties verbreekt.

Nu met Land Rover Series 3 en Defender 90


  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 08:27

Erhnam

het Hardware-Hondje :]

Topicstarter
Okee ik ben al een stukje verder. Het zijn de phpnuke sites van sommige gebruikers. De connecties blijven op Delayed_insert staan en worden niet gesloten.

Met dit commando lukt het mij om de id's te printen:

mysqladmin -u admin processlist --password=***** | grep Delayed_insert | awk '{print $2}' | xargs

Okee ben er uit! Kill de connecties nu met dit script:

mysqladmin -u admin processlist --password=***** | grep Delayed_insert | awk '{print $2}' | xargs mysqladmin -u admin --password=***** kill

Bedankt!

[ Voor 14% gewijzigd door Erhnam op 06-05-2005 10:59 ]

http://www.xbmcfreak.nl/


  • nero355
  • Registratie: Februari 2002
  • Laatst online: 08-02 00:26

nero355

ph34r my [WCG] Cows :P

Ik heb zoiets gehad met Gallery 2.0 RC1 daar bleven de connects op sleep staan en werden niet herbruikt of afgesloten.

Is er een manier om connecties die een bepaalde tijd niet gebruikt worden automatisch te killen ?? Of kan ik hierover beter de makers van Gallery mailen ??

|| Stem op mooiere Topic Search linkjes! :) " || Pi-Hole : Geen advertenties meer voor je hele netwerk! >:) ||


  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 08:27

Erhnam

het Hardware-Hondje :]

Topicstarter
Erhnam schreef op vrijdag 06 mei 2005 @ 10:54:
Okee ik ben al een stukje verder. Het zijn de phpnuke sites van sommige gebruikers. De connecties blijven op Delayed_insert staan en worden niet gesloten.

Met dit commando lukt het mij om de id's te printen:

mysqladmin -u admin processlist --password=***** | grep Delayed_insert | awk '{print $2}' | xargs

Okee ben er uit! Kill de connecties nu met dit script:

mysqladmin -u admin processlist --password=***** | grep Delayed_insert | awk '{print $2}' | xargs mysqladmin -u admin --password=***** kill

Bedankt!
Vreemd. Een dag verder en wat blijkt. Mysql killt de sleep connecties niet meer als ze over hun maximum sleep time heen gaan. Hier zit dus een probleem. Dit kan ik natuurlijk oplossen met:

mysqladmin -u admin processlist --password=***** | grep Sleep | awk '{print $2}' | xargs

En dit te killen. Is er niet een mogelijkheid de idle time er bij uit te lezen en als deze groter is dan 50 hem dan te listen en door te sturen om te killen? Hoe bouw je zo'n statement?

http://www.xbmcfreak.nl/


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 11:48
Met een leuk if statement :)

echo 20 1241 | awk '{ if ($1 > 50) { print $2}}'

(als je er dus echo 51 xxxx neer zet, krijg je xxxx te zien. In het bovenstaande voorbeeld krijg je dus geen output)

BTW, zet je wachtwoord in ~/.my.cnf mocht je dat nog niet gedaan hebben. Anders kunnen users van je bak het wachtwoord zo uit de processtree lezen.

[ Voor 79% gewijzigd door Jelmer op 07-05-2005 12:35 ]


  • Erhnam
  • Registratie: Januari 2000
  • Laatst online: 08:27

Erhnam

het Hardware-Hondje :]

Topicstarter
Jelmer schreef op zaterdag 07 mei 2005 @ 12:32:
Met een leuk if statement :)

echo 20 1241 | awk '{ if ($1 > 50) { print $2}}'

(als je er dus echo 51 xxxx neer zet, krijg je xxxx te zien. In het bovenstaande voorbeeld krijg je dus geen output)

BTW, zet je wachtwoord in ~/.my.cnf mocht je dat nog niet gedaan hebben. Anders kunnen users van je bak het wachtwoord zo uit de processtree lezen.
Bedankt voor de tip! Wist niet dat dit mogelijk was. Wachtwoord staat nu in de my.cnf onder kopje [clients]. Werkt super!

http://www.xbmcfreak.nl/


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 11-02 17:12

Kees

Serveradmin / BOFH / DoC
Delayed inserts moet je ook niet killen, je moet wel de timeout in de mysql omlaag zetten en mensen verbieden gebruik te maken van persistent connecties, en eisen dat ze hun connecties netjes sluiten aan het einde van elk script.

Eventueel kun je threads gaan killen met een Command 'sleep' info NULL en een time > 15 minuten, maar het verdiend de voorkeur mysql dit zelf op te laten lossen

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan

Pagina: 1