|
|
|
| И есть ли их смысл прибивать командой 'KILL' ? | |
|
|
|
|
автор: ..... (16.03.2010 в 23:27) |
|
|
для: oliss
(16.03.2010 в 19:27)
| | 1. от много чего. Постоянные соединения, клиенты которые просто не закрывают соединение.
mysql_pconnect() , mod_dbd .....
2. есть смысл сначала понять чем они создаются и нужны-ли вообще | |
|
|
|
|
автор: ..... (16.03.2010 в 23:33) |
|
|
для: .....
(16.03.2010 в 23:27)
| | между двумя запросами одного скрипта вроде тоже может быть статус Sleep | |
|
|
|
|
|
|
|
для: oliss
(16.03.2010 в 19:27)
| | Очень часто бывает, что скрипт отработал, начинает передавать объемную информацию клиенту, а mysql-соединение не разорвано, пока скрипт не закончит работу и не сработает сборщик мусора - такое соединение будет висеть со статусом sleep.
>И есть ли их смысл прибивать командой 'KILL' ?
В 95% случае да, но можно и неприятностей огрести, если выполняются какие-то критичные запросы, а между ними длительный объем работ, не связанный с MySQL, как раз то, о чем пишет ..... во втором посте. | |
|
|
|
|
|
|
|
для: cheops
(17.03.2010 в 00:59)
| | Тогда какое Time (в секундах ? ) критично ,после которого стоит прибить процесс ? | |
|
|
|
|
|
|
|
для: oliss
(17.03.2010 в 01:53)
| | Да все, что больше 1 секунды - sleep это ожидание, т.е. на сервере висит процесс размером мегабайт в 40 и ничего не делает, за него соседние процессы пашут. Чем больше таких процессов - тем медленее все работает. | |
|
|
|
|
|
|
|
для: cheops
(18.03.2010 в 13:30)
| | Так пойдёт ? 10 хватит?
<?
class sql_connect
{
# Установки соединения с базой данных
private $db_host =''; // Адрес MySQL-сервера
private $db_user =''; // Имя пользователя...
private $db_pass =''; // Пароль
private $db_name =''; // Имя базы данных
public function connect()
{
$db =mysql_connect( $this->db_host, $this->db_user,$this->db_pass);
mysql_query("SET NAMES 'utf8'",$db);
mysql_select_db($this->db_name,$db);
return $db;
}
public function kill_process()
{
while ($row=mysql_fetch_assoc(mysql_query("SHOW PROCESSLIST",$this->connect())))
{
if (($row['Time'] > 10 ) && ($row['Command']=='Sleep')) mysql_query('KILL'.$row['Id'],$this->connect());
}
}
}
$sql = new sql_connect;
echo $sql->connect(); //Resource id #2
|
| |
|
|
|
|
|
|
|
для: oliss
(18.03.2010 в 15:26)
| | > while ($row=mysql_fetch_assoc(mysql_query("SHOW PROCESSLIST",$this->connect())))
Н-да... | |
|
|
|
|
|
|
|
для: Тень&
(18.03.2010 в 15:30)
| | Что,можно лучше? | |
|
|
|
|
|
|
|
для: oliss
(18.03.2010 в 15:36)
| | mysql_query будет заново запрашиваться на каждом повторе цикла. | |
|
|
|
|
|
|
|
для: Trianon
(18.03.2010 в 15:46)
| | Сори,оплошность,однако. | |
|
|
|