Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: От чего возникают Sleep процессы?
 
 автор: oliss   (16.03.2010 в 19:27)   письмо автору
 
 

И есть ли их смысл прибивать командой '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

  Ответить  
 
 автор: cheops   (17.03.2010 в 00:59)   письмо автору
 
   для: oliss   (16.03.2010 в 19:27)
 

Очень часто бывает, что скрипт отработал, начинает передавать объемную информацию клиенту, а mysql-соединение не разорвано, пока скрипт не закончит работу и не сработает сборщик мусора - такое соединение будет висеть со статусом sleep.

>И есть ли их смысл прибивать командой 'KILL' ?
В 95% случае да, но можно и неприятностей огрести, если выполняются какие-то критичные запросы, а между ними длительный объем работ, не связанный с MySQL, как раз то, о чем пишет ..... во втором посте.

  Ответить  
 
 автор: oliss   (17.03.2010 в 01:53)   письмо автору
 
   для: cheops   (17.03.2010 в 00:59)
 

Тогда какое Time (в секундах ? ) критично ,после которого стоит прибить процесс ?

  Ответить  
 
 автор: cheops   (18.03.2010 в 13:30)   письмо автору
 
   для: oliss   (17.03.2010 в 01:53)
 

Да все, что больше 1 секунды - sleep это ожидание, т.е. на сервере висит процесс размером мегабайт в 40 и ничего не делает, за него соседние процессы пашут. Чем больше таких процессов - тем медленее все работает.

  Ответить  
 
 автор: oliss   (18.03.2010 в 15:26)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Тень&   (18.03.2010 в 15:30)   письмо автору
 
   для: oliss   (18.03.2010 в 15:26)
 

> while ($row=mysql_fetch_assoc(mysql_query("SHOW PROCESSLIST",$this->connect())))

Н-да...

  Ответить  
 
 автор: oliss   (18.03.2010 в 15:36)   письмо автору
 
   для: Тень&   (18.03.2010 в 15:30)
 

Что,можно лучше?

  Ответить  
 
 автор: Trianon   (18.03.2010 в 15:46)   письмо автору
 
   для: oliss   (18.03.2010 в 15:36)
 

mysql_query будет заново запрашиваться на каждом повторе цикла.

  Ответить  
 
 автор: oliss   (19.03.2010 в 00:20)   письмо автору
 
   для: Trianon   (18.03.2010 в 15:46)
 

Сори,оплошность,однако.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования