URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 74559
[ Назад ]

Исходное сообщение
"MySQL"

Отправлено Bob_kik , 08-Июн-07 13:47 
Добрый день всем.

Система FreeBSD 5.3, MySQL 5.041.
Долгое время все работало нормально, потом начали происходить странные вещи:
на локальном сайте новости открываються быстро (select * from news;)
но если с интернета - сильно тормозит. Все что не касаеться MySQL зрузиться отлично.
Не пойму в чем причина, никаких изменений не было.

В базе несколько таблиц, все они создавались одновременно с одной и той же кодировкой, но сейчас в результате вывода в браузере кодировки оказываються разные, одна koi8r другая cp1251. PHPMyAdmin показывает что кодировки одинаковые.


Содержание

Сообщения в этом обсуждении
"MySQL"
Отправлено Hanapi , 08-Июн-07 13:58 
>Добрый день всем.
>
>Система FreeBSD 5.3, MySQL 5.041.
>Долгое время все работало нормально, потом начали происходить странные вещи:
>на локальном сайте новости открываються быстро (select * from news;)
>но если с интернета - сильно тормозит. Все что не касаеться MySQL
>зрузиться отлично.
>Не пойму в чем причина, никаких изменений не было.
>
>В базе несколько таблиц, все они создавались одновременно с одной и той
>же кодировкой, но сейчас в результате вывода в браузере кодировки оказываються
>разные, одна koi8r другая cp1251. PHPMyAdmin показывает что кодировки одинаковые.


А с интернета - это как? удаленный клиент? сайт? как удаленно запускается команда select* from news;? и как запускается анологичная команда локально - прямо в консоли? или, опять же, сайт, клиент?


"MySQL"
Отправлено Bob_kik , 08-Июн-07 14:48 
>А с интернета - это как? удаленный клиент? сайт? как удаленно запускается
>команда select* from news;? и как запускается анологичная команда локально -
>прямо в консоли? или, опять же, сайт, клиент?

С интернета - на сайте, и удаленный клиент проверяли.
Команда select * from news; запускается с консоли с другого сервака.

Вот такая же нерешенная проблема http://www.linux.org.ru/view-message.jsp?msgid=1947647


"MySQL"
Отправлено Hanapi , 08-Июн-07 15:59 
>>А с интернета - это как? удаленный клиент? сайт? как удаленно запускается
>>команда select* from news;? и как запускается анологичная команда локально -
>>прямо в консоли? или, опять же, сайт, клиент?
>
>С интернета - на сайте, и удаленный клиент проверяли.
>Команда select * from news; запускается с консоли с другого сервака.
>
>Вот такая же нерешенная проблема http://www.linux.org.ru/view-message.jsp?msgid=1947647


Конкретный вопрос - команда запускается с консоли нормально, а с сайта - сильно грузится?
попробуйте запустить в консоли команду TOP и запустить запрос с сайта, отпишите тут результат выполнения команды TOP в момент выполнения SQL запроса.


"MySQL"
Отправлено Bob_kik , 08-Июн-07 16:22 
>Конкретный вопрос - команда запускается с консоли нормально, а с сайта -
>сильно грузится?
>попробуйте запустить в консоли команду TOP и запустить запрос с сайта, отпишите
>тут результат выполнения команды TOP в момент выполнения SQL запроса.

локально с консоли - нормально.
локально с сайта - нормально.
с сайта с инета - сильно грузится.

top

CPU states:  4.3% user,  0.0% nice,  3.5% system,  1.6% interrupt, 90.7% idle

PID   USERNAME PRI NICE SIZE    RES   STATE  TIME WCPU   CPU COMMAND
32622  mysql   20  0    56280K  4928K kserel 0:41 0.00%  0.00% mysqld

выполняем на удаленном серваке:

mysql -h <***> -u user -p news_site
password: ***
mysql> select * from news;
...................
146 rows in set (1.53 sec)
mysql>


"MySQL"
Отправлено Hanapi , 09-Июн-07 15:10 
>>Конкретный вопрос - команда запускается с консоли нормально, а с сайта -
>>сильно грузится?
>>попробуйте запустить в консоли команду TOP и запустить запрос с сайта, отпишите
>>тут результат выполнения команды TOP в момент выполнения SQL запроса.
>
>локально с консоли - нормально.
>локально с сайта - нормально.
>с сайта с инета - сильно грузится.
>
>top
>
>CPU states:  4.3% user,  0.0% nice,  3.5% system,  
>1.6% interrupt, 90.7% idle
>
>PID   USERNAME PRI NICE SIZE    RES  
> STATE  TIME WCPU   CPU COMMAND
>32622  mysql   20  0    56280K
> 4928K kserel 0:41 0.00%  0.00% mysqld
>
>
>
>выполняем на удаленном серваке:
>
>mysql -h <***> -u user -p news_site
>password: ***
>mysql> select * from news;
>...................
>146 rows in set (1.53 sec)
>mysql>


Сайт на пхп, как понимаю? Есть в нем что-нибудь, что может иницировать обращение к стороннему серверу? Резолв хоста ли, открытие удаленых файлов ли и пр. Код в студию, плз.
А топ я просил полный - меня больше интересует загрузка httpd, т.к. если с консоли все работает корректно, то мускул тут непричем.


"MySQL"
Отправлено Bob_kik , 11-Июн-07 12:59 
>Сайт на пхп, как понимаю? Есть в нем что-нибудь, что может иницировать
>обращение к стороннему серверу? Резолв хоста ли, открытие удаленых файлов ли
>и пр. Код в студию, плз.
>А топ я просил полный - меня больше интересует загрузка httpd, т.к.
>если с консоли все работает корректно, то мускул тут непричем.


TOP:
last pid: 23078;  load averages:  0.20,  0.19,  0.13                                                  up 4+00:46:24  10:31:49
78 processes:  1 running, 77 sleeping
CPU states:  2.3% user,  0.0% nice,  0.0% system,  1.9% interrupt, 95.7% idle
Mem: 122M Active, 18M Inact, 63M Wired, 9316K Cache, 33M Buf, 15M Free
Swap: 512M Total, 127M Used, 385M Free, 24% Inuse

  PID USERNAME        PRI NICE   SIZE    RES STATE    TIME   WCPU    CPU COMMAND
  558 squid            96    0   104M 48304K select  13:30  0.49%  0.49% squid
  618 clamav           20    0 45188K 25788K kserel  12:42  0.00%  0.00% clamd
  535 root             96    0 23624K  6424K select   3:31  0.00%  0.00% winbindd
32622 mysql            20    0 56408K  5020K kserel   2:34  0.00%  0.00% mysqld
  546 root             96    0  8432K  3016K select   0:49  0.00%  0.00% winbindd
  289 bind             20    0  6708K  3384K kserel   0:38  0.00%  0.00% named
  471 root             96    0  2764K  1140K select   0:32  0.00%  0.00% mpd
  371 _pflogd         -58    0  1572K   736K bpf      0:22  0.00%  0.00% pflogd
  440 root             96    0  3496K  1040K select   0:15  0.00%  0.00% sendmail
  495 root             96    0 16740K  4616K select   0:14  0.00%  0.00% httpd
  591 root             96    0  2768K   428K select   0:14  0.00%  0.00% mpd
  480 root             96    0  6204K   400K select   0:09  0.00%  0.00% snmpd
  642 root             96    0  2520K   372K select   0:07  0.00%  0.00% proftpd
  487 root             96    0  5636K   488K select   0:07  0.00%  0.00% snmptrapd
25997 www               4    0 17544K  6236K accept   0:07  0.00%  0.00% httpd
  582 squid            -8    0  1180K   532K piperd   0:05  0.00%  0.00% unlinkd
  275 root             96    0  1312K   420K select   0:03  0.00%  0.00% syslogd
  463 root              8    0  1396K   300K nanslp   0:03  0.00%  0.00% cron
13677 www               4    0 17048K  6632K accept   0:03  0.00%  0.00% httpd
31757 www               4    0 19544K  7224K accept   0:02  0.00%  0.00% httpd
33168 www               4    0 17020K  4276K accept   0:02  0.00%  0.00% httpd
91483 www               4    0 17016K  5080K accept   0:02  0.00%  0.00% httpd
9444 squid             4    0  6452K  2224K sbwait   0:01  0.00%  0.00% ntlm_auth
16972 www               4    0 20320K  9976K accept   0:01  0.00%  0.00% httpd
16973 www               4    0 20548K 10204K accept   0:01  0.00%  0.00% httpd
  625 clamav           20    0  4692K   728K pause    0:01  0.00%  0.00% freshclam
9443 squid            96    0  1552K   724K select   0:00  0.00%  0.00% pinger
5513 www               4    0 16912K  6236K accept   0:00  0.00%  0.00% httpd
5512 www               4    0 16896K  6156K accept   0:00  0.00%  0.00% httpd
9445 squid             4    0  6272K  2240K sbwait   0:00  0.00%  0.00% ntlm_auth
22738 root             96    0  2480K  1488K RUN      0:00  0.00%  0.00% top
  444 smmsp            20    0  3380K   536K pause    0:00  0.00%  0.00% sendmail
20061 root             96    0 17232K  3096K select   0:00  0.00%  0.00% mc
21735 webmaster        96    0  6132K  1900K select   0:00  0.00%  0.00% sshd
9452 squid             4    0  6100K  1936K sbwait   0:00  0.00%  0.00% ntlm_auth
16974 www               4    0 16832K  5856K accept   0:00  0.00%  0.00% httpd

лог мускула:
070607 15:51:07 mysqld started
070607 15:51:15  InnoDB: Started; log sequence number 0 43 655
070607 15:51:17 [Note] /usr/local/libexec/mysqld: ready for connections.
Version: '5.0.41'  socket: '/tmp/mysql.sock'  port: 3306  FreeBSD port: mysql-server-5.0.41
Status information:
Current dir: /data/mysql/
Running threads: 1  Stack size: 196608
Current locks:
lock: 0x9b0fa2c:
Key caches: default
Buffer_size:       8388600
Block_size:                         1024
Division_limit:                   100
Age_limit:                             300
blocks used:                           18
not flushed:                             0
w_requests:                           154
writes:                                        9
r_requests:                           324
reads:                                        22
handler status:
read_key:                           1
read_next:                         0
read_rnd                    22506
read_first:                       7
write:                           5295
delete                                 0
update:                               0
Table status:
Opened tables:                    3 6
Open tables:                           1
Open files:                             2
Open streams:                         0

Alarm status:
Active alarms:   0
Max used alarms: 3
Next alarm time: 0

PHP code

вот так соединяемся:
$_SESSION[ 'link' ] = mysql_connect( "localhost", "user", "passwd" );
if ( ! $_SESSION[ 'link' ] ) die( "Не могу подключиться к MySQL" );
mysql_select_db( "kic", $_SESSION[ 'link' ] ) or die( "Не могу открыть базу $db: ".mysql_error() );
mysql_query ( "set names koi8u;" );
mysql_query ( "set character set koi8r;" );

выбор с базы:
$query = "SELECT * FROM ".$dep;
$result = mysql_query ( $query, $_SESSION[ 'link' ] ) or die( "<b>Fatal error:</b><i>".mysql_error()."</i>" );
$num = mysql_num_rows( $result );
...
$query = "SELECT * FROM ".$dep." ORDER BY id DESC LIMIT ".$col.", 10";
$result = mysql_query ( $query, $_SESSION[ 'link' ] ) or die( "<b>Fatal error:</b> <i>".mysql_error()."</i>" );

while( $a_row = mysql_fetch_array( $result ) )
{
  $msg[ 'date' ] = $a_row[ 'date' ];
  $msg[ 'news' ] = $a_row[ 'news' ];
  if( $a_row[ 'pic' ] == "" )
    $msg[ 'pic' ] = "<img src=./images/gazeta_blank.gif>";
  else
    $msg[ 'pic' ] = "<img width=\"160\" border=\"0\" src=\"./images/pic/".$a_row[ 'pic' ]."\">";
  $middle = $middle.$this -> parser( $msg, "./template/middle.tpl" );
$page = $top_page.$middle.$var[ 'col' ].$bottom_page;
echo $page;
...
function parser($vars, $template) {

$str = join("", file($template));

return preg_replace("/%%(.+?)%%/e", "\$vars['\\1']", $str);
}

остальной код думаю неважен, там формируется постраничный вывод и т.д.
к строронним серверам обращений нету, никакого открытия файлов, ни резолва ...


"MySQL"
Отправлено Hanapi , 13-Июн-07 11:24 
Насколько мне известно,

> mysql_query ( "set names koi8u;" );
> mysql_query ( "set character set koi8r;" );

делается вот так:

mysql_query ( "set names koi8u;", $_SESSION[ 'link' ]);
mysql_query ( "set character set koi8r;", $_SESSION[ 'link' ]);

В остальном ничего страшного не увидел..