IP.Board повреждается таблица sessions

P
На сайте с 21.01.2012
Offline
72
958

Здравствуйте!

Имеется сайт на wordpress с мостом на форум IP.Board.

Примерно раз в 8-10 дней повреждается таблица sessions форума, из-за чего становится недоступен и форум и сайт. Так же после аварийных перезагрузок сервера таблица sessions повреждается, в результате сайт и форум опять же недоступны.

Сейчас для таблицы sessions используется тип таблиц MyISAM, в среднем она занимает пару мб.

Данные 509.6 КБ
Индекс 339 КБ
Фрагментировано 401.9 КБ
Эффективность 446.7 КБ
Всего 848.6 КБ

Фрагментировано и Эффективность практически всегда примерно равны. Если я буду каждый день оптимизировать эту таблицу, тогда повреждений спустя 8-10 дней не будет, однако при аварийной перезагрузке сервера повреждения есть всегда.

Я пробовал установить тип таблиц MEMORY, но спустя сутки таблица стала занимать ~30 мб и ее нельзя оптимизировать (видимо из-за того что она в озу?)

Ну и, собственно, вопрос: Как бороться с этой проблемой?

K5
На сайте с 21.07.2010
Offline
209
#1

таблицы обычно бьются от некорректных настроек mysql.

что говорит mysqltuner?

P.S. на сколько понял у вас впс/сервер.

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
P
На сайте с 21.01.2012
Offline
72
#2
kgtu5:
таблицы обычно бьются от некорректных настроек mysql.
что говорит mysqltuner?

P.S. на сколько понял у вас впс/сервер.

mysqltuner использовал, все по его рекомендациям правил. Сейчас он выдает все как "ОК" кроме

Temporary tables created on disk: 35% (63K on disk / 181K total)

И пишет

Temporary table size is already large - reduce result set size

Reduce your SELECT DISTINCT queries without LIMIT clauses

У меня включен лог медленных запросов >1 сек - их по 1-2 шт в день и они никакую выборку не делают. Какие выборки у меня могут быть без указания лимита - я не знаю, в теме и плагинах такого нет.

Может таблицу sessions переделать в innodb? Прочитал что они более надежные. Или я ошибаюсь?

PN
На сайте с 22.08.2012
Offline
103
#3
Preci:
Temporary table size is already large - reduce result set size
Reduce your SELECT DISTINCT queries without LIMIT clauses
У меня включен лог медленных запросов >1 сек - их по 1-2 шт в день и они никакую выборку не делают. Какие выборки у меня могут быть без указания лимита - я не знаю, в теме и плагинах такого нет.
Может таблицу sessions переделать в innodb? Прочитал что они более надежные. Или я ошибаюсь?

дело не в медленных запросах, может быть, а в большом количестве быстрых?☝

таблицы обычно вылетают из-за большого количества обращений к ним.

посмотрите Ваши настройки query_cache_size, query_cache_limit.

Мой совет помог? Не скупись! Bitcoin 1Lseddet1o1B6odgXQHbGaWGwRkt1Db8Ef Ethereum 0x450f1a17461e25194B7F9226cDEe70173F39e1e1
siv1987
На сайте с 02.04.2009
Offline
427
#4
Preci:
но спустя сутки таблица стала занимать ~30 мб и ее нельзя оптимизировать (видимо из-за того что она в озу?)

Что значит оптимизировать? Данные в этой таблице живут столько сколько времени установлено для сессий. Больше 15 минут ставить не нужно. Таблицу переведите в innoDB. Настройте роботс чтобы боты не шарили по всему форуму и не плодили ненужных сессий. У вас достаточно памяти для работы форума и вп на сервере при текущей активности?

P
На сайте с 21.01.2012
Offline
72
#5
дело не в медленных запросах, может быть, а в большом количестве быстрых?
таблицы обычно вылетают из-за большого количества обращений к ним.
посмотрите Ваши настройки query_cache_size, query_cache_limit.

query_cache_size = 256M

query_cache_limit = 16M

Что значит оптимизировать? Данные в этой таблице живут столько сколько времени установлено для сессий. Больше 15 минут ставить не нужно. Таблицу переведите в innoDB. Настройте роботс чтобы боты не шарили по всему форуму и не плодили ненужных сессий. У вас достаточно памяти для работы форума и вп на сервере при текущей активности?

phpmyadmin->sessions->

Используемое пространство

Данные 781.3 КБ

Индекс 455 КБ

Фрагментировано 582.2 КБ

Эффективность 654.1 КБ

Всего 1.2 МБ

Вот сейчас при типе таблицы MyISAM размер всего 1.2 МБ, а при типе таблицы MEMORY этот размер за сутки вырос до 30 МБ. и кнопки "Оптимизировать таблицу" не было.

Сейчас в настройках форума время жизни сессий стоит 60 мин.

Сессии плодятся от ботов даже если они заходят на сайт, т.к. стоит мост IPBWI. Роботс вроде нормально настроен и для форума и для сайта.

Памяти вроде как достаточно - 8 гб. Пока еще ниразу не заканчивалась :)

Оптимизировать таблицы в любом случае периодически надо, так что "самопадения" можно вылечить через cron. А вот повреждения таблицы после аварийного отключения - понятия не имею как лечить. Пока на ум приходит только сделать авто-оптимизацию таблиц каждый раз, когда сервер запускается. Хотя может и тип таблиц innodb поможет, попробуем.

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

N
На сайте с 06.05.2007
Offline
419
#6
Preci:
Я пробовал установить тип таблиц MEMORY, но спустя сутки таблица стала занимать ~30 мб и ее нельзя оптимизировать (видимо из-за того что она в озу?)

Зато из нее можно удалить. А разрушиться при рестарте сервера там просто нечему.

Зачем вам понадобился таймаут сессии в 60 минут ? Разве там не 15 минут было как у всех ?

Кнопка вызова админа ()
P
На сайте с 21.01.2012
Offline
72
#7
Зато из нее можно удалить. А разрушиться при рестарте сервера там просто нечему.
Зачем вам понадобился таймаут сессии в 60 минут ? Разве там не 15 минут было как у всех ?

Не знаю. Изначально у меня вообще стояло около недели. Были проблемы с мостом - иногда с форума разлогинивалось, а с сайта нет (спустя сутки) Тогда я ставил длительность сессии около недели, думал что разлогинивается из-за того, что сессия истекает. Потом разобрался в чем была проблема и поставил длительность сессии в 1 час. Уже вернул на 15 минут, спасибо

P
На сайте с 21.01.2012
Offline
72
#8

Прошло больше месяца, проблема больше не повторялась.

Что помогло: сменил тип таблицы sessions на innodb

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий