Добрый день всем.Система FreeBSD 5.3, MySQL 5.041.
Долгое время все работало нормально, потом начали происходить странные вещи:
на локальном сайте новости открываються быстро (select * from news;)
но если с интернета - сильно тормозит. Все что не касаеться MySQL зрузиться отлично.
Не пойму в чем причина, никаких изменений не было.В базе несколько таблиц, все они создавались одновременно с одной и той же кодировкой, но сейчас в результате вывода в браузере кодировки оказываються разные, одна koi8r другая cp1251. PHPMyAdmin показывает что кодировки одинаковые.
>Добрый день всем.
>
>Система FreeBSD 5.3, MySQL 5.041.
>Долгое время все работало нормально, потом начали происходить странные вещи:
>на локальном сайте новости открываються быстро (select * from news;)
>но если с интернета - сильно тормозит. Все что не касаеться MySQL
>зрузиться отлично.
>Не пойму в чем причина, никаких изменений не было.
>
>В базе несколько таблиц, все они создавались одновременно с одной и той
>же кодировкой, но сейчас в результате вывода в браузере кодировки оказываються
>разные, одна koi8r другая cp1251. PHPMyAdmin показывает что кодировки одинаковые.
А с интернета - это как? удаленный клиент? сайт? как удаленно запускается команда select* from news;? и как запускается анологичная команда локально - прямо в консоли? или, опять же, сайт, клиент?
>А с интернета - это как? удаленный клиент? сайт? как удаленно запускается
>команда select* from news;? и как запускается анологичная команда локально -
>прямо в консоли? или, опять же, сайт, клиент?С интернета - на сайте, и удаленный клиент проверяли.
Команда select * from news; запускается с консоли с другого сервака.Вот такая же нерешенная проблема http://www.linux.org.ru/view-message.jsp?msgid=1947647
>>А с интернета - это как? удаленный клиент? сайт? как удаленно запускается
>>команда select* from news;? и как запускается анологичная команда локально -
>>прямо в консоли? или, опять же, сайт, клиент?
>
>С интернета - на сайте, и удаленный клиент проверяли.
>Команда select * from news; запускается с консоли с другого сервака.
>
>Вот такая же нерешенная проблема http://www.linux.org.ru/view-message.jsp?msgid=1947647
Конкретный вопрос - команда запускается с консоли нормально, а с сайта - сильно грузится?
попробуйте запустить в консоли команду TOP и запустить запрос с сайта, отпишите тут результат выполнения команды TOP в момент выполнения SQL запроса.
>Конкретный вопрос - команда запускается с консоли нормально, а с сайта -
>сильно грузится?
>попробуйте запустить в консоли команду 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>
>>Конкретный вопрос - команда запускается с консоли нормально, а с сайта -
>>сильно грузится?
>>попробуйте запустить в консоли команду 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, т.к. если с консоли все работает корректно, то мускул тут непричем.
>Сайт на пхп, как понимаю? Есть в нем что-нибудь, что может иницировать
>обращение к стороннему серверу? Резолв хоста ли, открытие удаленых файлов ли
>и пр. Код в студию, плз.
>А топ я просил полный - меня больше интересует загрузка 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% InusePID 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: 0Alarm status:
Active alarms: 0
Max used alarms: 3
Next alarm time: 0PHP 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_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' ]);В остальном ничего страшного не увидел..