|
| Дата |
|
USD/RUB | 90.2486 | BTC/USD | 68741.4978 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
03.12.2011, 12:50
|
Start Post: Freebsd + куча вп Hdd не справляется
|
Китайский пельмень
Регистрация: 23.07.2008
Сообщений: 1,000
Бабло: $323219
|
сабж.
как можно оптимизировать?
вп порядка 600 шт + по мелочи сайтики. стоит w3 total cache кеширует mysql страницы не кешируется. (для одного плагина надо обновление страниц в реальном времени.)
на серваке ram 16GB есть мысль туда что-то перекинуть в tmpfs.
сейчас mysql'ю там выдано место для временных таблиц. работать стало быстрее но все равно морозится особенно при наплыве ботов.
так же стоит apc с размером кеша 780 mb пробовал ставить больше но % попаданий в кеш существенно не увеличивается что при 1gb что при 2gb 1 фиг. W3 в него не пишет т.к. раньше было все настроенно без него сейчас менять замучаешся... да и 600+ блогов в кеш запихнуть достаточно проблематично
mysql на кешы тоже рам выдано прилично
конфиг:
PHP код:
[MYSQLD]
tmpdir=/mnt/mysqltmp
skip-locking
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
key_buffer_size=256M
query_cache_size=2G
query_cache_limit=512M
tmp_table_size=384M
max_heap_table_size=384M
thread_cache_size=16
table_cache=64000
innodb_buffer_pool_size=128M
max_connections=1000
wait_timeout =2500
interactive_timeout=2500
thread_concurrency = 8
skip-federated
skip-bdb
skip-name-resolve
mysqltuner:
PHP код:
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.0.92
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 1G (Tables: 8029)
[--] Data in InnoDB tables: 8M (Tables: 6)
[--] Data in MEMORY tables: 0B (Tables: 12)
[!!] Total fragmented tables: 295
-------- Security Recommendations -------------------------------------------
[OK] All database users have passwords assigned
-------- Performance Metrics -------------------------------------------------
[--] Up for: 57m 59s (107K q [30.855 qps], 10K conn, TX: 358M, RX: 17M)
[--] Reads / Writes: 89% / 11%
[--] Total buffers: 2.8G global + 6.4M per thread (1000 max threads)
[OK] Maximum possible memory usage: 9.0G (52% of installed RAM)
[OK] Slow queries: 0% (409/107K)
[OK] Highest usage of available connections: 55% (559/1000)
[OK] Key buffer size / total MyISAM indexes: 256.0M/138.3M
[OK] Key buffer hit rate: 97.9% (668K cached / 14K reads)
[OK] Query cache efficiency: 42.7% (30K cached / 70K selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 6K sorts)
[!!] Temporary tables created on disk: 38% (4K on disk / 11K total)
[OK] Thread cache hit rate: 88% (1K created / 10K connections)
[OK] Table cache hit rate: 99% (8K open / 8K opened)
[OK] Open file limit used: 18% (17K/90K)
[OK] Table locks acquired immediately: 99% (60K immediate / 60K locks)
[OK] InnoDB data size / buffer pool: 8.2M/128.0M
-------- Recommendations -----------------------------------------------------
General recommendations:
Run OPTIMIZE TABLE to defragment tables for better performance
MySQL started within last 24 hours - recommendations may be inaccurate
Enable the slow query log to troubleshoot bad queries
Temporary table size is already large - reduce result set size
Reduce your SELECT DISTINCT queries without LIMIT clauses
hdd с отключенным апачем
PHP код:
# diskinfo -t ada0
ada0
512 # sectorsize
500107862016 # mediasize in bytes (466G)
976773168 # mediasize in sectors
0 # stripesize
0 # stripeoffset
969021 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
5VJ8MPVP # Disk ident.
Seek times:
Full stroke: 250 iter in 7.160039 sec = 28.640 msec
Half stroke: 250 iter in 4.539064 sec = 18.156 msec
Quarter stroke: 500 iter in 6.842026 sec = 13.684 msec
Short forward: 400 iter in 3.325927 sec = 8.315 msec
Short backward: 400 iter in 3.012394 sec = 7.531 msec
Seq outer: 2048 iter in 0.165592 sec = 0.081 msec
Seq inner: 2048 iter in 0.584486 sec = 0.285 msec
Transfer rates:
outside: 102400 kbytes in 0.995734 sec = 102839 kbytes/sec
middle: 102400 kbytes in 1.160060 sec = 88271 kbytes/sec
inside: 102400 kbytes in 1.930989 sec = 53030 kbytes/sec
hdd с включенным апачем
PHP код:
s114# diskinfo -t ada0
ada0
512 # sectorsize
500107862016 # mediasize in bytes (466G)
976773168 # mediasize in sectors
0 # stripesize
0 # stripeoffset
969021 # Cylinders according to firmware.
16 # Heads according to firmware.
63 # Sectors according to firmware.
5VJ8MPVP # Disk ident.
Seek times:
Full stroke: 250 iter in 660.203254 sec = 2640.813 msec
Half stroke:
дальше не дождался да и вообще похоже что он повесился....
wp сайты - сплоги так что потеря небольшой части данных не критична.
думаю перекидывать при загрузки все базы на ram диск при загрузке и раз в полчаса-час по крону копировать их на hdd
но тут вопрос.. как подобный процесс пройдет при запущенном mysql и соответственно возможно изменяемой бд.... не грохнитсяли база? + надо учитывать что на hdd нагрузка может быть от чтения php файлов соответственно процесс может затянутся
может кто с подобной проблеммой сталкивался и есть какие-то решения?
|
|
|
03.12.2011, 18:08
|
#12
|
Senior Member
Регистрация: 05.09.2008
Сообщений: 606
Бабло: $124350
|
Ничо се 16Gb ram такое должно справляться с 600 блогами ... по любому нужно выносить php в fast-cgi, лучше в fpm(тут контроль над процессами улучшенный), а остальное на nginx ... производительность сразу вырастет ... + есть куда тюнить дальше можно на unix сокеты будет перейти ...
там же по top видно что нереально плодиться и жрет памяти ... а моменты макс нагрузки просто теряет контроль над собой и своими процессами ... а в случае с nginx+php ... задачу апача будут выполнять уже 2 приложения , которые оптимизированны под большие нагрузки.
Кста если переживаешь за htaccessы от апача ... то под ворд пресс, уже валом решений для nginx которые достаточно копипастить если погуглить ...
|
|
|
03.12.2011, 18:22
|
#13
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Цитата:
Сообщение от somebody_
Кста если переживаешь за htaccessы от апача ... то под ворд пресс, уже валом решений для nginx которые достаточно копипастить если погуглить ...
|
да там на все 600 сайтов будет строчек 30 nginx-конфига...и то много
|
|
|
03.12.2011, 18:30
|
#14
|
кодер-энтузиаст
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,381
Бабло: $447150
|
Веб-сервер тут ни при чем.
Нагибается скорее всего mysql в моменты обновления кэшей - чтобы строить пагинацию там совершенно зубодробительный запрос, который на больших базах убивает сервак.
|
|
|
03.12.2011, 18:43
|
#15
|
Китайский пельмень
Регистрация: 23.07.2008
Сообщений: 1,000
Бабло: $323219
ТС -->
|
ТС
В моменты пиковых нагрузок la 2-5 как максимум бывает. но сайты при этом могут грузится пару минут.
в бд может писать
пивик,(может нахрен его с части блогов? )
все 600 блогов обновляются. но не очень активно порядка 2-5 постов на 1 блог в сутки.
+ на сервере крутится пачка парсеров контента (малонагрузных да и вяло крутятся)
для распознавания htacces по идеи можно ткнуть апачь за ngnix (не пробовал правда) хотя проще наверное изучить реврайт под ngnix.
кей буфер пробовал ставить и 2-4 гигабайта разницы особой не было. не хочет майскуль дальше в память впихиватся. хоть тресни
tmp_table_size до 4G увеличивал как и heap тоже разницы незаметно все равно 40% писалось на hdd поэтому на ram диск в итоге и перебрался.
gstat буду ловить когда тупить начнет.
с munin и прочими инструментами тюнинга буду видимо уже завтра разбираться. тут работы привалило неожиданно
спасибо большое всем отписавшимся
зы
так на вскидку в gstat такие пики бывают. думаю когда падает примерно так оно все и выглядит
PHP код:
dT: 1.007s w: 1.000s
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
544 236 15 60 641.4 221 1267 5245 100.2| ada0
0 0 0 0 0.0 0 0 0.0 0.0| ada1
544 236 15 60 641.4 221 1267 5245 100.2| ada0s1
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1a
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1b
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1d
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1f
544 236 15 60 641.4 221 1267 5245 100.2| ada0s1h
0 0 0 0 0.0 0 0 0.0 0.0| mirror/boot0
0 0 0 0 0.0 0 0 0.0 0.0| mirror/swap0
0 0 0 0 0.0 0 0 0.0 0.0| mirror/var0
0 0 0 0 0.0 0 0 0.0 0.0| mirror/usr0
544 236 15 60 641.4 221 1267 5246 100.2| mirror/home0
0 0 0 0 0.0 0 0 0.0 0.0| cache/var0
0 0 0 0 0.0 0 0 0.0 0.0| md0
0 0 0 0 0.0 0 0 0.0 0.0| cache/usr0
0 0 0 0 0.0 0 0 0.0 0.0| cache/home0
1 236 15 60 17.7 221 1267 3.2 98.1| ada0.sched.
0 0 0 0 0.0 0 0 0.0 0.0| ada1.sched.
думаю головки не успевают банально.
|
|
|
03.12.2011, 20:42
|
#16
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
MyName,
Цитата:
думаю головки не успевают банально
|
хуй с ними, с головками
смотри на них только в том случае, если диск совсем дико не так работает/сыпится или диски хуевые попались.
А остальные проблемы надо решать на логическом уровне, а не на физическом.
То что занято дохуя памяти апачем в неактивном состоянии - в этом плохого вроде нет ничего. Память может использоваться системой как угодно, лишь бы рационально. И в пиках надо чтобы она не заканчивалась.
Вот ты говоришь
Цитата:
буду ловить когда тупить начнет
|
момент ловить, сидеть и ждать, смотря на топ? или писать гигабайты текстовых логов? - это все неэффективно.
Для выявления ботлнека очень хорошо подходят графическое представление логов, записанных в RRD БД. Пример подобного инструмента - munin. Установил и несколько часов или сутки можно будет понять примерное место проблемы. Далее, если понадобится, более точно локализовывать проблему можно самописными плагинами для мунин, они на баше легко пишутся, иногда в несколько строк, но очень много готовых. Короче советую поставить.
Цитата:
кей буфер пробовал ставить и 2-4 гигабайта разницы особой не было. не хочет майскуль дальше в память впихиватся. хоть тресни
|
зачем, если у тебя тупо кеев в сумме меньше 200М. мускулу больше не надо. кей-буффер не умножается на кол-во потоков, в отличие от других буфферов, которые у тебя по 2М
|
|
|
03.12.2011, 20:54
|
#17
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
бесполезно, т.к. эта настройка относится к таблицам типа MEMORY, просто раньше они назывались HEAP, отсюда и название конфиг-переменной. Она на тебя не влияет, т.к. скорее всего у тебя нет memory-таблиц - это такой тип таблиц, похожий на myisam, только они размещаются исключительно в раме.
|
|
|
03.12.2011, 21:38
|
#18
|
Китайский пельмень
Регистрация: 23.07.2008
Сообщений: 1,000
Бабло: $323219
ТС -->
|
ТС
поймал gstat в момент тормоза. правда не самого сильного
Код:
dT: 1.007s w: 1.000s
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
1013 213 26 163 2004 187 4538 9027 110.1| ada0
0 0 0 0 0.0 0 0 0.0 0.0| ada1
1013 213 26 163 2004 187 4538 9029 110.1| ada0s1
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1a
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1b
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1d
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1f
1013 213 26 163 2004 187 4538 9031 110.1| ada0s1h
0 0 0 0 0.0 0 0 0.0 0.0| mirror/boot0
0 0 0 0 0.0 0 0 0.0 0.0| mirror/swap0
0 0 0 0 0.0 0 0 0.0 0.0| mirror/var0
0 0 0 0 0.0 0 0 0.0 0.0| mirror/usr0
1013 213 26 163 2004 187 4538 9031 110.1| mirror/home0
0 0 0 0 0.0 0 0 0.0 0.0| cache/var0
0 0 0 0 0.0 0 0 0.0 0.0| md0
0 0 0 0 0.0 0 0 0.0 0.0| cache/usr0
0 0 0 0 0.0 0 0 0.0 0.0| cache/home0
1 213 26 163 18.6 187 4538 3.3 108.9| ada0.sched.
0 0 0 0 0.0 0 0 0.0 0.0| ada1.sched.
chesser да как бы ловить не надо оно само периодический то и дело лагает. просто время от времени сайт проверять надо. а серв этот у меня и так открыт постоянно
munin завтра курить буду а то не сталкивался с ним ещё ни разу.. может что-то подскажет..
апачей умещается до 325 штук без свопинга. но если натыкается при это на лаг hdd то все пиши пропала будут тупить и расти
|
|
|
03.12.2011, 21:40
|
#19
|
Китайский пельмень
Регистрация: 23.07.2008
Сообщений: 1,000
Бабло: $323219
ТС -->
|
ТС
Цитата:
Сообщение от chesser
бесполезно, т.к. эта настройка относится к таблицам типа MEMORY, просто раньше они назывались HEAP, отсюда и название конфиг-переменной. Она на тебя не влияет, т.к. скорее всего у тебя нет memory-таблиц - это такой тип таблиц, похожий на myisam, только они размещаются исключительно в раме.
|
mysqltuner попросил увеличить я сильно не сопротивлялся. но да судя по всему данных в MEMORY таблицах нет..
|
|
|
03.12.2011, 21:56
|
#20
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Цитата:
Сообщение от MyName
chesser да как бы ловить не надо оно само периодический то и дело лагает. просто время от времени сайт проверять надо. а серв этот у меня и так открыт постоянно
|
в мунине удобство в том, что наглядно видно несколько параметров(которые ты хочешь смотреть). Допустим, что было в этот момент с памятью, процом, сколько тредов было в апаче, сколько была очередь в мускуле и тд. и по графикам можно увидеть что предшествовало каким-то неприятным событиям. Может у тебя там какой-то жестокий крон врубается, который дает дикую нагрузку на диски. На графике можно было бы увидеть регулярность подобного и тд. Ну и просто удобно следить за сервером
|
|
|
03.12.2011, 22:15
|
#21
|
Китайский пельмень
Регистрация: 23.07.2008
Сообщений: 1,000
Бабло: $323219
ТС -->
|
ТС
а вот и пришел тормоз
Код:
last pid: 5074; load averages: 4.03, 2.10, 1.30 up 0+09:14:54 18:13:37
907 processes: 1 running, 906 sleeping
CPU: 31.1% user, 0.0% nice, 6.0% system, 0.5% interrupt, 62.4% idle
Mem: 10G Active, 2434M Inact, 2561M Wired, 39M Cache, 1646M Buf, 733M Free
Swap: 8192M Total, 8192M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
4880 www 1 47 0 939M 286M getblk 1 0:01 2.59% httpd
5068 www 1 47 0 903M 150M accept 2 0:00 2.49% httpd
4836 www 1 47 0 933M 402M vnread 3 0:05 2.20% httpd
4827 www 1 46 0 911M 451M accept 1 0:05 1.86% httpd
4969 www 1 46 0 913M 209M getblk 1 0:01 1.76% httpd
4305 www 1 46 0 927M 595M getblk 1 0:12 1.66% httpd
4868 www 1 45 0 927M 265M select 0 0:01 1.66% httpd
4454 www 1 45 0 905M 433M accept 3 0:04 1.37% httpd
5037 www 1 45 0 913M 162M getblk 1 0:01 1.37% httpd
4356 www 1 45 0 927M 740M sbwait 2 0:18 1.27% httpd
5019 www 1 45 0 933M 159M biord 0 0:01 1.27% httpd
5059 www 1 47 0 927M 170M getblk 1 0:01 1.27% httpd
4397 www 1 46 0 933M 720M getblk 3 0:16 1.17% httpd
4950 www 1 45 0 913M 82500K biord 2 0:00 1.17% httpd
4549 www 1 48 0 911M 214M accept 0 0:01 1.07% httpd
4996 www 1 45 0 921M 132M select 1 0:00 1.07% httpd
5030 www 1 45 0 933M 166M biord 1 0:00 0.98% httpd
5001 www 1 45 0 921M 153M biord 3 0:00 0.98% httpd
4993 www 1 45 0 905M 153M accept 3 0:01 0.88% httpd
5028 www 1 45 0 921M 138M biord 1 0:00 0.88% httpd
4367 www 1 47 0 927M 788M getblk 3 0:16 0.78% httpd
4768 www 1 47 0 937M 474M getblk 2 0:06 0.78% httpd
4814 www 1 45 0 933M 332M sbwait 0 0:03 0.78% httpd
4879 www 1 45 0 933M 275M getblk 3 0:02 0.78% httpd
4976 www 1 46 0 933M 137M getblk 3 0:00 0.78% httpd
4941 www 1 45 0 907M 168M accept 0 0:00 0.78% httpd
5002 www 1 46 0 915M 52220K getblk 0 0:00 0.78% httpd
5054 www 1 46 0 905M 117M accept 2 0:00 0.78% httpd
4576 www 1 45 0 911M 703M accept 1 0:12 0.68% httpd
4765 www 1 45 0 907M 256M accept 3 0:01 0.68% httpd
4959 www 1 46 0 927M 184M getblk 1 0:01 0.68% httpd
5011 www 1 44 0 933M 198M biord 1 0:01 0.68% httpd
4984 www 1 44 0 907M 179M accept 1 0:01 0.68% httpd
4973 www 1 44 0 933M 181M getblk 1 0:01 0.68% httpd
5044 www 1 45 0 933M 163M vnread 0 0:00 0.68% httpd
4997 www 1 46 0 933M 65564K getblk 3 0:00 0.68% httpd
5027 www 1 45 0 933M 191M getblk 3 0:01 0.59% httpd
5024 www 1 45 0 905M 114M accept 0 0:00 0.59% httpd
5052 www 1 44 0 933M 66020K biord 0 0:00 0.59% httpd
5040 www 1 45 0 933M 65696K getblk 3 0:00 0.59% httpd
4042 www 1 44 0 929M 733M biord 1 0:20 0.49% httpd
4966 www 1 44 0 905M 205M accept 1 0:01 0.49% httpd
4791 www 1 44 0 905M 235M accept 2 0:01 0.49% httpd
4967 www 1 44 0 907M 160M accept 3 0:01 0.49% httpd
4965 www 1 46 0 907M 153M accept 0 0:00 0.39% httpd
4957 www 1 44 0 905M 55588K accept 0 0:00 0.39% httpd
5017 www 1 44 0 905M 147M accept 0 0:00 0.39% httpd
5058 www 1 44 0 905M 122M accept 0 0:00 0.39% httpd
4480 www 1 44 0 933M 569M biord 1 0:10 0.29% httpd
4803 www 1 44 0 933M 492M getblk 2 0:05 0.29% httpd
4818 www 1 46 0 933M 388M getblk 1 0:05 0.29% httpd
4743 www 1 45 0 921M 297M getblk 2 0:02 0.29% httpd
4684 www 1 45 0 909M 175M getblk 1 0:02 0.29% httpd
4977 www 1 44 0 905M 157M accept 1 0:01 0.29% httpd
4939 www 1 46 0 907M 142M accept 2 0:00 0.29% httpd
Код:
dT: 1.003s w: 1.000s
L(q) ops/s r/s kBps ms/r w/s kBps ms/w %busy Name
2720 89 86 569 1029 3 96 26569 101.9| ada0
0 0 0 0 0.0 0 0 0.0 0.0| ada1
2720 89 86 569 1029 3 96 26573 101.9| ada0s1
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1a
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1b
5 0 0 0 0.0 0 0 0.0 0.0| ada0s1d
0 0 0 0 0.0 0 0 0.0 0.0| ada0s1f
2715 89 86 569 1029 3 96 26579 101.9| ada0s1h
0 0 0 0 0.0 0 0 0.0 0.0| mirror/boot0
0 0 0 0 0.0 0 0 0.0 0.0| mirror/swap0
5 0 0 0 0.0 0 0 0.0 0.0| mirror/var0
0 0 0 0 0.0 0 0 0.0 0.0| mirror/usr0
2715 89 86 569 1029 3 96 26586 101.9| mirror/home0
0 0 0 0 0.0 0 0 0.0 0.0| cache/var0
0 0 0 0 0.0 0 0 0.0 0.0| md0
0 0 0 0 0.0 0 0 0.0 0.0| cache/usr0
0 0 0 0 0.0 0 0 0.0 0.0| cache/home0
0 89 86 569 9.8 3 96 16.1 88.6| ada0.sched.
0 0 0 0 0.0 0 0 0.0 0.0| ada1.sched.
тормоз был относительно короткий. потупило пару минут и отпустило
|
|
|
|