С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 02/01/12 в 15:40 |
У меня самописный сайтик с всего-лишь 700-800к хитов в сутки
На вот таком сервере: http://digitalone.com/calc.html?base_id=5 (все по дефолту - 2 терабайтных диска в raid-1)
CentOs 5 64bit, php 5 через php-fpm, nginx 1.0.2, MySQL 5.5.12, для поиска используется Sphinx последней версии (searchd), в общем все довольно стандартно
И вот уже 2 месяца мучает меня загрузка диска. Ниже 90-95% не опускается никогда. То есть, в начале вообще жопа была, но додумались включить noatime, nodiratime. Стало вот так: http://img835.imageshack.us/img835/7333/disko.png
Что особенно пугает, это соотношение rddsk и wrdsk у mysql. Нет у меня почти ни insertов, ни updateов - что же он такое пишет, понять не могу таблицы в основном innodb, самая большая - 2.5 gb. ibdata = 5.5 gb, buffer_pool_size = 8 gb
2 админа смотрели - не смогли ничего найти. 1 советовал смотреть в сторону Sphinx - ок, с помощью кеша я уменьшил интенсивность запросов в 3 раза - загрузка диска не изменилась вообще
В общем, что делать-то, искать проблему дальше или забить и переезжать на ssd? У кого сколько хитов выдерживает raid 1 из двух hdd?
|
|
|
|
С нами с 29.03.11
Сообщения: 96
Рейтинг: -117
|
Добавлено: 02/01/12 в 15:55 |
Дисковая система слабая, берите как минимум 4 sas диска и RAID-10, вообще, чем больше дисков, тем лучше, пусть даже дешевых SATA.
|
|
|
|
Хостинг, CDN
С нами с 23.12.04
Сообщения: 1259
Рейтинг: 1405
|
Добавлено: 02/01/12 в 16:02 |
А мелкой статики много? У меня была аналогичная проблема, когда на сайте, где были сотни тыщ тумб параметр в системе # sysctl kern.maxvnodes оказался ниже текущего # sysctl vfs.numvnodes и пошли затыки на дисках.. Как только поменяли все прошло.
А вообще 2 диска это мало, я на таких серверах использую 6 sas в рейде 10, тогда они меньше напрягаются.. 800к на одной базе или сайтов много?
|
|
Inxy.com - Dedicated servers, VPS, colocation, CDN.
|
4
|
|
|
С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 02/01/12 в 16:16 |
Да, несколько лямов мелких тумб. Но параметров таких не вижу:
Цитата: | [root@centos ~]# sysctl kern.maxvnodes
error: "kern.maxvnodes" is an unknown key
[root@centos ~]# sysctl vfs.numvnodes
error: "vfs.numvnodes" is an unknown key |
Это под centos?
Все на одном сайте...
|
|
|
|
Хостинг, CDN
С нами с 23.12.04
Сообщения: 1259
Рейтинг: 1405
|
Добавлено: 02/01/12 в 16:20 |
Нет это под freebsd. Если на одном, то вряд ли это аналогичная проблема. Скорее мускуль грузит диски.
Какие параметры стоят для innodb?
innodb_flush_log_at_trx_commit
innodb_buffer_pool_size= (тут 8 гиг как я понял)
innodb_flush_method=
innodb_log_file_size=
innodb_log_buffer_size=
Рекомендую поставить
innodb_flush_log_at_trx_commit=2
innodb_flush_method=O_DIRECT
|
|
Inxy.com - Dedicated servers, VPS, colocation, CDN.
|
3
|
|
|
С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 02/01/12 в 16:27 |
Так и есть:
innodb_buffer_pool_size = 8G
innodb_log_file_size = 512M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
|
|
|
|
Хостинг, CDN
С нами с 23.12.04
Сообщения: 1259
Рейтинг: 1405
|
Добавлено: 02/01/12 в 17:04 |
В базе с индексами и таблицами все ок?
Скинь список первых процессов по команде top (или ее аналог в Centos)
|
|
Inxy.com - Dedicated servers, VPS, colocation, CDN.
|
3
|
|
|
С нами с 08.02.03
Сообщения: 10564
Рейтинг: 5962
|
Добавлено: 02/01/12 в 17:39 |
shar: если сайтик самописный юзай кеширование (ответов или страниц целиком) через php-memcached, это буквально 4-6 строк, облегчить должно все в разы...
|
|
|
|
С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 02/01/12 в 17:43 |
|
|
|
|
С нами с 08.02.03
Сообщения: 10564
Рейтинг: 5962
|
Добавлено: 02/01/12 в 17:44 |
логи отключены, файловую в noatime уже делал?
|
|
|
|
С нами с 08.02.03
Сообщения: 10564
Рейтинг: 5962
|
Добавлено: 02/01/12 в 17:45 |
Дык она у тя еще и свопит ;(
|
|
|
|
С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 02/01/12 в 17:46 |
JM: А есть смысл кешировать запросы типа SELECT id,caption,duration FROM videos WHERE id IN(123,456,789,...), даже без сортировки?
Логи отключены, noatime есть
|
|
|
|
С нами с 08.02.03
Сообщения: 10564
Рейтинг: 5962
|
Добавлено: 02/01/12 в 17:51 |
shar: Мне кажется при таком уровне запросов можно и отсортировать (кпу же сортирует), а потом закешировать...
|
|
|
|
Хостинг, CDN
С нами с 23.12.04
Сообщения: 1259
Рейтинг: 1405
|
Добавлено: 03/01/12 в 00:28 |
А посмотри размеры логов у сфинкса, сколько файлики весят? :-)
|
|
Inxy.com - Dedicated servers, VPS, colocation, CDN.
|
2
|
|
|
С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 03/01/12 в 00:37 |
DiamonD: лог запросов отключен и опустошен) лог работы - 10 кб
|
|
|
|
Хостинг, CDN
С нами с 23.12.04
Сообщения: 1259
Рейтинг: 1405
|
Добавлено: 03/01/12 в 00:50 |
А скинь еще содержимое конфига для мускуля.
|
|
Inxy.com - Dedicated servers, VPS, colocation, CDN.
|
2
|
|
|
С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 03/01/12 в 01:38 |
Код: | [client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 32M
table_open_cache = 64000
open-files-limit=200000
read_buffer_size = 32M
read_rnd_buffer_size = 32M
thread_cache_size = 8
query_cache_size = 192M
max_heap_table_size = 32M
tmp_table_size = 32M
long_query_time = 2
log-queries-not-using-indexes
thread_concurrency = 32
server-id = 1
innodb_buffer_pool_size = 8G
innodb_additional_mem_pool_size = 64M
innodb_log_file_size = 512M
innodb_log_buffer_size = 8M
innodb_lock_wait_timeout = 50
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 512M
read_buffer = 64M
write_buffer = 64M
[mysqlhotcopy]
interactive-timeout
|
|
|
|
|
Хостинг, CDN
С нами с 23.12.04
Сообщения: 1259
Рейтинг: 1405
|
Добавлено: 03/01/12 в 12:08 |
Я бы еще попробовал:
–skip-name-resolve
–skip-locking
key_buffer_size = 16M (маловато, увеличь раза в 4)
thread_concurrency = (обычно ставится по числу суммарных ядер процессоров)
table_cache не вижу что стоит (запусти show status LIKE "Opened_tables%";) и поставь с запасом..
sort_buffer сколько стоит? Он очень влияет на ORDER BY и GROUP BY. Поставь 32М, если вдруг там стоит 4.
thread_cache_size (посмотри show status LIKE "Max_used_connections%";) и поставь чуть больше.
Проанализируй SHOW STATUS LIKE 'Qcache%';
Посчитай qcache_hit_ratio = qcache_hits / (qcache_hits + qcache_inserts + qcache_not_cached). Должно стремиться к 1. Если у тебя скажем 0.4, то увеличь query_cache_size
|
|
Inxy.com - Dedicated servers, VPS, colocation, CDN.
|
2
|
|
|
Хостинг, CDN
С нами с 23.12.04
Сообщения: 1259
Рейтинг: 1405
|
Добавлено: 03/01/12 в 12:13 |
Что-то мне подсказывает что key_buffer у тебя мелкий и временные файлы свопятся на диск.. Сделай show status LIKE "Key%"; В идеале Key_reads/Key_read_request обычно должно быть < 0,01. Если у тебя больше, увеличь буфер, скажем сперва до 128 мег, потом до 256..
|
|
Inxy.com - Dedicated servers, VPS, colocation, CDN.
|
2
|
|
|
С нами с 03.02.09
Сообщения: 139
Рейтинг: 235
|
Добавлено: 03/01/12 в 13:43 |
Да у тебя nginx в глубокий swapping ушел судя по iotop! В первый раз такое вижу, хотя это явно не причина, а следствие того что у тебя просто не хватает памяти чтобы держать все 300+ процессов.
Сколько у тебя 100-мегабайтных php-fpm, searchd? Их не нужно так много, они всю память съели, начался swapping от сюда и 100% загрузка диска. Да и nginx-ов так много не нужно.
Плюс наверно еще memcached где-то есть, кушает свой кусок памяти.
Избавься от swapping-га и все будет нормально.
|
|
|
|
С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 03/01/12 в 15:13 |
iRoot: а сколько посоветуешь nginxов и php?
|
|
|
|
Хостинг проектов под ключ
С нами с 18.02.04
Сообщения: 614
Рейтинг: 727
|
Добавлено: 03/01/12 в 17:23 |
shar писал: | iRoot: а сколько посоветуешь nginxов и php? |
nginx-ов по количествку ядер*2 рекомендуют во избежание блокировок.
пхп по количеству запросов к скриптам в пике с небольшим запасом.
|
|
|
|
С нами с 03.02.09
Сообщения: 139
Рейтинг: 235
|
Добавлено: 03/01/12 в 19:06 |
shar писал: | iRoot: а сколько посоветуешь nginxов и php? |
Nginx многопоточен, обычно хватает и одного процесса, по количеству ядер их выставляют только когда основная работа сервера - отдача статики nginx-ом и это происходит с огромной скоростью, но не все ядра используются на 100%, в твоем случае и одного-двух думаю хватит, но это неважно на самом деле, процесс очень легкий по сравнению с PHP, можно не трогать.
По PHP нужно прикинуть за сколько времени у тебя всреднем генерируется страница и сколько обращений за этот промежуток времени обрабатывает сервер, так ты получишь минимальное количество процессов, которые тебе нужны. Например страница генерируется за 0.2 сек, нагрузка 10 запросов в секунду, значит всреднем у тебя работают 2 процесса. Но это все танцы с бубном вокруг костра, в php-fpm есть динамический processes pool где задаешь сколько процессов запускать, какой потолок и сколько держать без дела на случай если нагрузка возрастет резко, он сам решит сколько их нужно в зависимости от нагрузки.
http://www.php.net/manual/en/install.fpm.configuration.php
Посмотри и на остальные процессы, sphinx например сколько они памяти кушают и тоже урезонь их аппетиты. Главное чтобы ты втиснулся в свои 16Gb и оставил swap впокое.
|
|
|
|
С нами с 24.12.10
Сообщения: 478
Рейтинг: 366
|
Добавлено: 22/01/12 в 17:53 |
Перенес на 2 диска, добавил памяти, стало вот так:
c0d1 - тумбы, c0d0 - система и все остальное
Может есть какие-то спец. настройки nginx для большого количества тумб, или надо добавлять диски в raid?
|
|
|
|
Хостинг проектов под ключ
С нами с 18.02.04
Сообщения: 614
Рейтинг: 727
|
Добавлено: 22/01/12 в 23:22 |
Может UFS тормозит?
Сколько файлов в каталогах где тумбы?
|
|
|
|