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

Форум Apache

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

 

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

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

тема: Производительность сервера.
 
 автор: tim333   (19.02.2008 в 17:43)   письмо автору
 
 

Днем сайт неслабо виснет(Страницы и файлы медлено открывает) , а ночью он просто "летает",
что и понятно.

Дневная статистика сервера через команду top показывает следующее:

last pid: 91166;  load averages:  0.63,  0.49,  0.41           up 4+02:51:43  17:37:58
194 processes: 1 running, 193 sleeping
CPU states: 12.8% user,  0.0% nice, 15.4% system,  0.4% interrupt, 71.4% idle
Mem: 658M Active, 77M Inact, 214M Wired, 31M Cache, 111M Buf, 12M Free
Swap: 2048M Total, 120M Used, 1928M Free, 5% Inuse, 8K In

  PID USERNAME      THR PRI NICE   SIZE    RES STATE    TIME   WCPU COMMAND
74357 mysql          13  20    0   467M 66584K kserel  94:17  8.69% mysqld
82960 www             1  96    0 20600K  8256K select   0:21  0.35% httpd
 1115 www             1   4    0 22200K  9200K sbwait   4:15  0.14% httpd
 1102 www             1   4    0 21096K  8232K sbwait   4:05  0.10% httpd
 1094 www             1   4    0 21764K  8916K sbwait   3:59  0.5% httpd
 1095 www             1   4    0 21068K  8284K sbwait   3:58  0.00% httpd
 1096 www             1   4    0 21260K  8308K sbwait   3:53  0.00% httpd
 1097 www             1   4    0 21092K  8324K sbwait   3:52  0.00% httpd
 1110 www             1   4    0 22488K  9612K sbwait   3:48  0.00% httpd


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

   
 
 автор: cheops   (20.02.2008 в 00:09)   письмо автору
 
   для: tim333   (19.02.2008 в 17:43)
 

>0.63, 0.49, 0.41
У вас система свободна как никогда. Иногда пропускную способность на один процесс зажимают сверх нормы - и процесс вынужден ждать, когда ему в очередной раз квоту выделят, система летает, однако, apache не даёт процессам отдать данные за разумный период времени и всё начинает икусствено подтормаживаться. Вы модуль cband не используете?

PS Это одна из возможных причин, не обязательно, что в вашем случае механизм такой... У вас памяти 1 Gb? Сайт один на сервере? Сколько примерно хостов в сутки?

   
 
 автор: tim333   (20.02.2008 в 01:55)   письмо автору
 
   для: cheops   (20.02.2008 в 00:09)
 

Памяти 1gb.
Cайтов вообще 3 но 1 рабочий а 2 других только с контентом(фотки , скриптов, станиц нету).
Хостов около 3к+
Хитов 110к+

Честно я незнаю что это за модуль cband, если вы скажите где можно посмотреть исопльзуеться он или нет .
Вроде он неиспользуеться:

Loaded Modules     mod_php5, mod_setenvif, mod_so, 
mod_unique_id, mod_log_forensic, mod_usertrack, 
mod_headers, mod_expires, mod_cern_meta, mod_proxy, 
mod_digest, mod_auth_db, mod_auth_anon, mod_auth, 
mod_access, mod_rewrite, mod_alias, mod_userdir, 
mod_speling, mod_actions, mod_imap, mod_asis, mod_cgi, 
mod_dir, mod_autoindex, mod_include, mod_info, mod_status, 
mod_negotiation, mod_mime, mod_mime_magic, mod_log_config, 
mod_env, mod_vhost_alias, mod_mmap_static, http_core


тут можно посмотреть phpinfo:
http://1zoom.ru/phpinfo.php

   
 
 автор: cheops   (20.02.2008 в 02:06)   письмо автору
 
   для: tim333   (20.02.2008 в 01:55)
 

Хм... в принципе летать всё должно, а my.ini настроен? Можете его прикрепить сюда?
Когда сервер начнёт тормозить, выполните команду uptime - как она выглядит? И кто жрёт в основном процессор mysqld? Можно памяти под MySQL попытаться побольше выполнить - чем быстрее будут отрабатываться запросы, тем быстрее вся система будет работать, если cband не используется, узким местом, как правило, становится MySQL, особенно если её не настраивали.

   
 
 автор: tim333   (20.02.2008 в 02:56)   письмо автору
 
   для: cheops   (20.02.2008 в 02:06)
 

my.ini Я ненашел, незнаю где его искать , папок куча, нашел my.cnf, может он нужен?

   
 
 автор: cheops   (20.02.2008 в 03:22)   письмо автору
 
   для: tim333   (20.02.2008 в 02:56)
 

Да, под FreeBSD конечно же my.cnf (my.ini используется в windows) - хм вполне корректный my.cnf - всё вроде адекватно настроено...

   
 
 автор: tim333   (20.02.2008 в 03:03)   письмо автору
 
   для: cheops   (20.02.2008 в 02:06)
 

my.ini Я ненашел, незнаю где его искать , папок куча, нашел my.cnf, может он нужен?
Команда Uptime выглядит сейчас так:

2:55AM  up  3:52, 1 user, load averages: 0.04, 0.08, 0.09


Днем когда сервер адски виснет эти значение около 0.3-0.6

Как можно посмотреть кто жрет процессор mysqld? я просто незнаю....

Mysql может и вправду вяло настроена...хотя проде памяти под нее прилично выделено, но неуверен.
Я незнаю используеться ли cband или нет, незнаю как и где это посмотреть.В phpinfo нету его)

   
 
 автор: cheops   (20.02.2008 в 03:23)   письмо автору
 
   для: tim333   (20.02.2008 в 03:03)
 

Это мало... 7-8 обычно создаёт ощутимую нагрузку... когда top выполняете посмотрите сколько процентов жрут mysqld-процессы (столбец WCPU) и сколько вообще mysqld процессов в системе?

PS У вас phpMyAdmin имеется?

   
 
 автор: tim333   (20.02.2008 в 08:35)   письмо автору
 
   для: cheops   (20.02.2008 в 03:23)
 

Mysql процессов всегда 1 , жрет 0-15% WcpU.
phpMyAdmin имееться, обычно висит до 20-40 процессов.
Хотите посмотреть переменные и настройки? , вот...

   
 
 автор: cheops   (20.02.2008 в 13:12)   письмо автору
 
   для: tim333   (20.02.2008 в 08:35)
 

20-40? Любопытно, а что делают? Спят или работают? И сколько времени висят? Вы используете постоянные соединения или временные?

   
 
 автор: tim333   (20.02.2008 в 14:42)   письмо автору
 
   для: cheops   (20.02.2008 в 13:12)
 

висят 20-40 в основном все в спящем состоянии , промелькает иногда 1-2 работающии, висят 0-10 сек в основном, бывает и дольше до 30-40-50сек.
Иногда поевлютсья процессы котрые вообще висят долго, все процессы которые висят больще 80 сек я убиваю командой kill, запускаемая через крон каждую минуты.
P.S были процессы которые висели вообще по минуте - часу, они накапливались , пришлось сделать крон для убийства слишком долгих.

Использую везде временое соединение.

   
 
 автор: cheops   (20.02.2008 в 23:39)   письмо автору
 
   для: tim333   (20.02.2008 в 14:42)
 

Т.е. pconnect нигде не используете, а процессы всё равно спят (дело в том, что спят они в 98% случаев только из-за pconnect, а когда спят, жрут оперативную память, которой у вас не много и вынуждают использовать медленный swap)? У вас форум phpBB имеется (если имеется он тоже настроен на временные, а не на постоянные соединения)?

   
 
 автор: tim333   (21.02.2008 в 00:15)   письмо автору
 
   для: cheops   (20.02.2008 в 23:39)
 

Форума нету, постояных соединений нету, если бы были постояные соединения я бы их увидил в процессах.
swap может и подругим причинам использоваться.
Постоянных процессов нет.

   
 
 автор: tim333   (21.02.2008 в 00:27)   письмо автору
 
   для: cheops   (20.02.2008 в 23:39)
 

Ну может с количеством висяков я приувеличил, но до 10 частенько наблюдаю в спящем состоянии.
Может это из большого количесва команд? в минуту их 3-4к как пишит phpmyadmin.
Тоесть в сек штук 50-60 висят штук 5-10. Значит работают или уже отработали штучек около 50.
Может back_log как то влияет ?
Я уже незнаю что делать. Неделю мучаюсь в поисках.

   
 
 автор: tim333   (21.02.2008 в 00:35)   письмо автору
 
   для: cheops   (20.02.2008 в 23:39)
 

Сейчас ноч и сайт можно сказать прекрасно работает, количесво висяков 0-5.
Swap постепенно кушаеться гдето до 120мб если сайт дня 3 работает.

   
 
 автор: tim333   (20.02.2008 в 08:36)   письмо автору
 
   для: cheops   (20.02.2008 в 03:23)
 

состояние MySQL ? вот..

   
 
 автор: cheops   (20.02.2008 в 13:16)   письмо автору
 
   для: tim333   (20.02.2008 в 08:36)
 

А у вас таблицы индексированы? Что-то у вас кэш индекса очень вяло используется, даже слишком вяло для такой значительной посещаемости.

PS Сколько в МБ занимает объём базы данных основного файла? И сколько занимает самая крупная таблица?

   
 
 автор: tim333   (20.02.2008 в 14:51)   письмо автору
 
   для: cheops   (20.02.2008 в 13:16)
 

Если честно я плохо понимаю что такое индексированые таблицы, вот пример одной таблицы:

 Field     | Type   | Null | Key | Default | Extra          |
+-----------+--------+------+-----+---------+----------------+
| id        | int(7) | NO   | PRI | NULL    | auto_increment | 
| login     | text   | YES  |     | NULL    |                | 
| bal       | int(6) | YES  |     | NULL    |                | 
| golos     | int(5) | YES  |     | NULL    |                | 
| one       | int(6) | YES  |     | NULL    |                | 
| yes       | int(6) | YES  |     | NULL    |                | 
| two7      | int(6) | YES  |     | NULL    |                | 
| two30     | int(6) | YES  |     | NULL    |                | 
| allltim   | int(7) | YES  |     | NULL    |                | 
| ncoment   | int(3) | YES  |     | NULL    |                | 
| newcoment | int(3) | YES  |     | NULL    |                | 
| date      | text   | YES  |     | NULL    |                | 
| width     | int(5) | YES  |     | NULL    |                | 
| height    | int(5) | YES  |     | NULL    |                | 
| kb        | float  | YES  |     | NULL    |                | 
| dir       | int(4) | YES  |     | NULL    |                | 
| 1d        | int(6) | YES  |     | NULL    |                | 
| 2d        | int(6) | YES  |     | NULL    |                | 
| 3d        | int(6) | YES  |     | NULL    |                | 
| 4d        | int(6) | YES  |     | NULL    |                | 
| 5d        | int(6) | YES  |     | NULL    |                | 
| 6d        | int(6) | YES  |     | NULL    |                | 
| 7d        | int(6) | YES  |     | NULL    |                | 
| 8d        | int(6) | YES  |     | NULL    |                | 
| 9d        | int(6) | YES  |     | NULL    |                | 
| 10d       | int(6) | YES  |     | NULL    |                | 
| 11d       | int(6) | YES  |     | NULL    |                | 
| 12d       | int(6) | YES  |     | NULL    |                | 
| 13d       | int(6) | YES  |     | NULL    |                | 
| 14d       | int(6) | YES  |     | NULL    |                | 
| 15d       | int(6) | YES  |     | NULL    |                | 
| 16d       | int(6) | YES  |     | NULL    |                | 
| 17d       | int(6) | YES  |     | NULL    |                | 
| 18d       | int(6) | YES  |     | NULL    |                | 
| 19d       | int(6) | YES  |     | NULL    |                | 
| 20d       | int(6) | YES  |     | NULL    |                | 
| 21d       | int(6) | YES  |     | NULL    |                | 
| 22d       | int(6) | YES  |     | NULL    |                | 
| 23d       | int(6) | YES  |     | NULL    |                | 
| 24d       | int(6) | YES  |     | NULL    |                | 
| 25d       | int(6) | YES  |     | NULL    |                | 
| 26d       | int(6) | YES  |     | NULL    |                | 
| 27d       | int(6) | YES  |     | NULL    |                | 
| 28d       | int(6) | YES  |     | NULL    |                | 
| 29d       | int(6) | YES  |     | NULL    |                | 
| name      | text   | YES  |     | NULL    |                | 
| un        | int(2) | NO   |     | 0       |                | 
| oz        | text   | NO   |     |         |                | 
+-----------+--------+------+-----+---------+----------------+
48 rows in set (0.04 sec)


все остольные таблицы примерно такие же(с одним ключом id, поля конечно другие)

Самая большая таблица весит 1.4Mb

   
 
 автор: cheops   (25.02.2008 в 12:42)   письмо автору
 
   для: tim333   (20.02.2008 в 14:51)
 

Слишком мало, чтобы создавать нагрузку...

   
 
 автор: tim333   (20.02.2008 в 03:05)   письмо автору
 
   для: cheops   (20.02.2008 в 02:06)
 

командой ps -A нашел такии строчки:

  840 con- I      0:00.01 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-f
  991 con- S     25:01.53 /usr/local/libexec/mysqld --defaults-extra-file=/var/

может поможет.....

   
 
 автор: himic   (20.02.2008 в 15:13)   письмо автору
 
   для: tim333   (20.02.2008 в 03:05)
 

Если честно я плохо понимаю что такое индексированые таблицы, вот пример одной таблицы:

Ага, а сервер администрируйте )))

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

   
 
 автор: himic   (20.02.2008 в 15:15)   письмо автору
 
   для: himic   (20.02.2008 в 15:13)
 

А что никто не спросил про канал, какая пропускная способность?
Хыыы, у вас и картинки медленно грузятся, у меня канал 30 мбит/с, а загружается как по модему

   
 
 автор: tim333   (20.02.2008 в 15:57)   письмо автору
 
   для: himic   (20.02.2008 в 15:15)
 

Канал 100 Mбайт/сек.
Просто дело в том что пропускная способность напрямую зависит от производительности сервера. Грузиться медлено так как весь сервер вяло работает.
Канала хватает это точно, просто надо сервер настроить для большей производительности.

   
 
 автор: tim333   (20.02.2008 в 16:30)   письмо автору
 
   для: tim333   (20.02.2008 в 15:57)
 

P.S пропускная способность канала 100Mбит/c

   
 
 автор: tim333   (20.02.2008 в 16:41)   письмо автору
 
   для: himic   (20.02.2008 в 15:15)
 

P.S Я тут пинговал свой сайт и сайт конкурента.
на свой сайт хоть пингуй пакеты по 10кб, причем половина из них у меня бьються, а на сайте конкурента вроде больше пакета 1кб пакеты неидут.
Может поможет уменьшить максимальный размер пакета? и как это сделать?

   
 
 автор: tim333   (20.02.2008 в 16:18)   письмо автору
 
   для: himic   (20.02.2008 в 15:13)
 

Раньше был хостинг , состоящий из 3 хостингов и mysql база вообще на другом компьютере находилась, приходили сообщения о критической нагрузки на mysql сервер , но все более менее работало, сейчас перешел на выделеный сервер где все сразу, начались проблемы.
Where действительно очень часто используетсья (90-95% всех mysql команд).

Вот примеры чаще всего использованых команд Mysql :


$width="число";
$height="число";
$page="число";
select * from blabla where width>='$width' and height>='$height'  order by (bal/golos)*(one/(select ndown from tim where id='1')) desc,id desc limit $page,9

select * from blabla where id='число';


Это самые частые Mysql команда.
Cтолбцы bal,golos,one не уникальны и насколько я понял индексы тут не примениш.

Еще куча команд обращеных к таблице в одну строку с where id='1';

   
 
 автор: Trianon   (23.02.2008 в 09:39)   письмо автору
 
   для: tim333   (20.02.2008 в 16:18)
 

> select * from blabla where width>='$width' and height>='$height' order by (bal/golos)*(one/(select ndown from tim where id='1')) desc,id desc limit $page,9

>Cтолбцы bal,golos,one не уникальны и насколько я понял индексы тут не примениш.
Зачем вообще совать независимый select ndown from tim в выражение порядка?!

Может быть попробовать переписать выражение порядка как bal*one/golos , или даже завести отдельный индексированный столбик под его значение? Уникальность значений ключа сортировки для создания индекса, кстати, совсем не требуется.

   
 
 автор: pini-pini   (20.02.2008 в 16:16)   письмо автору
 
   для: tim333   (19.02.2008 в 17:43)
 

Мне кажется, что надо ещё гиг оперативы поставить, а потом таблицы в MySQL заоптимизировать

   
 
 автор: himic   (21.02.2008 в 06:22)   письмо автору
 
   для: pini-pini   (20.02.2008 в 16:16)
 

НАш админ оракла был в шоке от селекта )))
Попробуй отдельно в каком нибудь query browsere отработать, посмотри, действительно ли он так долго отрабатывает, если да, то оптимизируй селекты.

Попробуй mysql_free_result, вобщем эксперементируй

   
 
 автор: tim333   (21.02.2008 в 13:11)   письмо автору
 
   для: himic   (21.02.2008 в 06:22)
 

Пооптимизировал уже все. Самые жестокие селекты которых в секунду около 1-2 обрабатываеться за 0.05сек.
Дело скорея всего в другом.

   
 
 автор: tim333   (21.02.2008 в 14:36)   письмо автору
 
   для: tim333   (19.02.2008 в 17:43)
 

Я уже вообще ничего непонимаю.
Начинаю сканировать сайт через host-tracker.com. Время отклика 18 сек, ппц я в панике.
Проходит минутка и БАХ, сайт начинает работать раз в 5 шустрея.Я быстренько смотрю количесво висящих процессов в mysql, смотрю что в top и всякие характеристики.

И все осталось таким же , как было все, так все и осталось, непонимаю....... o_O

   
 
 автор: himic   (25.02.2008 в 05:51)   письмо автору
 
   для: tim333   (21.02.2008 в 14:36)
 

Может линуксу переустановить?
Давай ставь SLAS )))

А если серьёзно, если всё так серьёзно, то попробуй создать копию этой машины.
Я думаю ничего страшного не будет если ты быстренько кабеля переставишь и посмотришь скорость работы на другой машине.

   
 
 автор: glsv (Дизайнер)   (25.02.2008 в 07:10)   письмо автору
 
   для: tim333   (21.02.2008 в 14:36)
 

Раз машина у Вас свободна, значит ограничения либо на уровне приложений, либо на уровне канала.

Для самого Apache у Вас какие ограничения на максимальное кол-во процессов? Если он сильно зажат, то примерно такая картина и будет. Error_log для Apache (общий, не для сайта) что-нибудь говорит?

А сервер где расположен?

   
Rambler's Top100
вверх

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