To get on going processes in mysql client and see which queries are taking longer use:
It will show you a table with list of all connection from different hosts (if applicable) and their
#mysql #client #kill #processlist #sysadmin #dba #linux
SHOW PROCESSLIST;
It will show you a table with list of all connection from different hosts (if applicable) and their
PID
number. You can use this number to kill a process that consumes your server CPU, Memory, etc.:KILL <pid>;
#mysql #client #kill #processlist #sysadmin #dba #linux
Today we encountered slowness on MongoDB that caused all the infrastructure to get affected. The problem was that slowness on some specific mongo queries caused all the other queries to wait. YES we use index and YES we used explained on those queries and saw that those queries are using index. Now to mitigate the issue we had to kill very slow
The function below kills slow queries:
We need to save this query in mongo itself and run it directly. To save the above function in mongoDB use
I will explain the above function parts in a different post. Now you need to load server scripts and then run it:
The above query kills queries that has taken longer than 20s.
#mongodb #mongo #function #kill_slow_queries #currentOp
find
queries until we fix the issue.The function below kills slow queries:
function (sec) {db.currentOp()['inprog'].forEach(function (query) { if (query.op !== 'query') { return; } if (query.secs_running < sec) { return; } print(['Killing query:', query.opid, 'which was running:', query.secs_running, 'sec.'].join(' ')); db.killOp(query.opid); })}
We need to save this query in mongo itself and run it directly. To save the above function in mongoDB use
db.system.js.save
:db.system.js.save({_id:"kill_slow_queries", value:function (sec) {db.currentOp()['inprog'].forEach(function (query) { if (query.op !== 'query') { return; } if (query.secs_running < sec) { return; } print(['Killing query:', query.opid, 'which was running:', query.secs_running, 'sec.'].join(' ')); db.killOp(query.opid); })} })
I will explain the above function parts in a different post. Now you need to load server scripts and then run it:
db.loadServerScripts()
kill_slow_queries(20)
The above query kills queries that has taken longer than 20s.
NOTE:
you can create a shell script and run it periodically using crontab until you fix the slowness on your server.#mongodb #mongo #function #kill_slow_queries #currentOp
You can kill a process by
corrupt the file, if you are sending RPC messages, you will break the process in between and drop all messages.
To handle signal you can use
- https://gist.github.com/alirezastack/ae4e12a21ccb91264b69e1d14a53c044
The above method will handle
To test it you can run the script in terminal and then try to find the pid number of the process and finally kill it:
The above command will issue
#python #sigint #sigterm #signal #kill
kill
command. But have you thought what would happen to the process which is runing if you issue kill command? It will do something nasty in between if you do not handle the kill signal gracefully. If you are writing to a file, it willcorrupt the file, if you are sending RPC messages, you will break the process in between and drop all messages.
To handle signal you can use
signal
python module. A sample of the signal handling is created as a gist in github below:- https://gist.github.com/alirezastack/ae4e12a21ccb91264b69e1d14a53c044
The above method will handle
SIGINT
, SIGTERM
and end the loop gracefully.To test it you can run the script in terminal and then try to find the pid number of the process and finally kill it:
sudo kill 4773
The above command will issue
SIGTERM
and script will handle it gracefully. SIGINT
on the other hand is issued when you press CTRL+C
.#python #sigint #sigterm #signal #kill
Gist
Gracefully kill python script using signal module