Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
avgaz

Падает сервер при входе в админку

Рекомендованные сообщения

07/23/19 18:26 (изменено)

Здравствуйте, обновил форум с 3.4.5 на 4.4.4 все роде нормально два дня, пересчет шёл и тд, все пересчитало и работало нормально потихоньку все настраивал.

Последнее не помню, что менял в админке(вроде последнее это отредактировал шаблоны userBar и mobileNavigation в добавил доп.ссылки в панель пользователя типа ссылки на Мои Публикации и ссылку для админа вход в админку портала) через какое то время пытаюсь войти в админку форума и сервер зависает напрочь забивает все процессами в логах ошика mod_fcgid: can't apply process slot for перезагружаю сервер и все нормально работает 140-170 процессов, опять пробую зайти и опять все зависает процессов сразу 300-380 в логах опять эта ошибка, перезагрузка и опять нормальная работа хоть несколько часов, пока опять не попробую войти в админку и все повисает на авторизации.

В чем проблема как решить её?? в админку естественно не войти, что бы попробовать откатить шаблоны которые редактировал ((

содержимое /etc/apache2/mods-available/fcgid.conf

<IfModule mod_fcgid.c>
FcgidConnectTimeout 20
IPCCommTimeout 600
 MaxRequestLen 104857600
 <IfModule mod_mime.c>
   AddHandler fcgid-script .fcgi
 </IfModule>
</IfModule>

пробовал добавлять туда

MaxRequestsPerProcess 500
DefaultMaxClassProcessCount 250
IdleTimeout 60
MaxProcessCount 2000

но не коем образом это проблему не решала, разве что процессов ещё больше становилось

 

Так же сильно выросла таблица ibf_core_output_cache 2.8г и продолжает увеличиваться, когда вся база после обновления была 1.7г

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение
07/23/19 22:50 (изменено)

Замучался не как не могу решить проблему вернее её даже найти, а она походу связана с базой данных. Решил попробовать подключить данную базу на второй сайт на котором тоже стоит версия 4.4 который полностью работает в админку заходит все отлично, в конфиге прописал подключение к базе данных проблемного сайта, второй сайт загрузился с этой базой пробую войти в админку и на тебе так же все падает, то есть что то с базой проблемного сайт. попробовал выполнить SHOW PROCESSLIST там там множество таких записей Waiting for table level lock /*IPS\Session\Store\_Database::loadSession:93*/ SE.

 

Теперь в обще не знаю куда копать (((

 

Посмотрел что таблица core_sessions имеет 27000 записей, что в принципе не может быть столько в онлайне, очистил её и без проблем вошёл в админку. С чем могло быть связано такое наполнение этой таблицы? и как это связано с увеличением процессов при входе в админку

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение
SHOW PROCESSLIST там там множество таких записей Waiting for table level lock /*IPS\Session\Store\_Database::loadSession:93*/ SE.

Используйте InnoDB. Там блокировка идет на уровне записи, а не таблицы.

Поделиться сообщением


Ссылка на сообщение
07/24/19 07:11 (изменено)

Используйте InnoDB. Там блокировка идет на уровне записи, а не таблицы.

Ситуация повторилась, таблица ibf_core_sessions имеет записей 17360 и mysql перестает отвечать при заходе в админку или на страницу пользователи онлайн то есть где список пользователей онлайн есть.

 

как перевести таблицы правильно в InnoDB и поможет ли это решить проблему??

почему такая ситуация почему забивается эта таблица??

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение
ALTER TABLE ibf_core_sessions ENGINE=InnoDB;

Поделиться сообщением


Ссылка на сообщение
07/24/19 09:17 (изменено)

Не пойму почему эта таблица постоянно увеличивается, очищаешь через phpmyadmin через полчаса там уже более 5тыс записей и постоянно увеличивается, хотя в реальности с гостями максимум 200-300 пользователей

 

может какие задачи не выполняются? по этому и не очищается таблица сессий и output_cache тоже растет по идее она тоже должна очищатся по времени кеша

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение

может какие задачи не выполняются?

Смотрите в списке задач.

Поделиться сообщением


Ссылка на сообщение
хотя в реальности с гостями максимум 200-300 пользователей

 

У меня с роботами 11000 уников в сутки, а без роботов 150 ))

Поделиться сообщением


Ссылка на сообщение

Смотрите в списке задач.

В списке задач она висит и без ошибок был косяк это при обновлении пересчете использовал cron после обновления задачу из крона удалил, а в алминке не переключил, что задачи по трафику запускать видимо это и вызвало переполнение этой таблицы, хотя все равно почему при более чем 4к записей в таблице сервер уходит в аут на страницах где есть вывод списка онлайн, то есть это в админке, в списке онлайн пользователей, так же если разместить виджет онлайн пользователей то тоже создает большое количество процессов и сервер перегружает перестает отвечать??

Сейчас вроде задача по о чистке выполняется, то есть таблица периодически очищается, и не превышает 3к записей, но при этом записей все равно много которые уже более 15минут не активны. Пришлось закрыть страницу пользователей онлайн и убрать виджет, списка онлайн т.к при открытии этих страниц тормоза страница грузится по минуте, без них нормально все.

 

У меня с роботами 11000 уников в сутки, а без роботов 150 ))

тут проблема переполнения таблицы было записями и как понял при большом количестве записей в таблице ibf_core_sessions страницы где выводится список онлайн просто перегружали сервер процессами и он тупо не справлялся, даже сейчас когда записей в этой таблице не более 3000 при открытии этих страниц, только одним человеком добавляется порядка 50-100 дополнительных процессов и страница загружается по минуте.

 

Так пока и не понял как решить проблему эту???

Поделиться сообщением


Ссылка на сообщение
07/24/19 18:24 (изменено)

Ну, как решить. Как учили. Отключить все не дефолтное (темы, приложения, убрать все изменения в коде) и смотреть. Базу переконвертировать в инно. Нгинкс конф подкрутить. Сервер взять дедик в хетзнере...

Изменено пользователем Zero108

Поделиться сообщением


Ссылка на сообщение
07/24/19 20:19 (изменено)

Ну, как решить. Как учили. Отключить все не дефолтное (темы, приложения, убрать все изменения в коде) и смотреть. Базу переконвертировать в инно. Нгинкс конф подкрутить. Сервер взять дедик в хетзнере...

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

Причем не понятно как работает очищение этой таблицы как я понимаю раз в 15минут выполняется запрос на очищение, но такое ощущение, что очищается явно не все что старше 15 минут т.к в списке пользователей онлайн есть те кто совершал 30 минут назад.

Вот где этот код который очищает таблицу от старых сессий? где время задач настраивается?

 

Сейчас например в этой таблице 7500 тыс записей, и и запрос

SELECT * FROM `ibf_core_sessions` WHERE `running_time` > unix_timestamp(now()) - 1200

выдает 4986 то есть 5к записей которые уже без движения более 20минут

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение
07/25/19 07:24 (изменено)

а так и должно быть, что сессии с одинаковыми ip там дублируются? то есть яндекс бот в этой таблице с одним ip имеет несколько записей, я просто понять не могу почему эта таблица разрастается так. Не когда в онлайне и не боло более 900 с гостями в месте, а тут постоянно тысячи записей в этой таблице

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение

Пытаясь решить проблему выяснил что вот эта функция загружает sql на полную

public function getOnlineUsers( $flags=0, $sort='desc', $limit=NULL, $memberGroup=NULL, $showAnonymous=FALSE )
{
	/* Query */
	$where = array(
		array( 's.running_time>?', \IPS\DateTime::create()->sub( new \DateInterval( 'PT30M' ) )->getTimeStamp() ),
		array( "s.login_type!=?", \IPS\Session\Front::LOGIN_TYPE_SPIDER )
	);

	if ( ! $showAnonymous )
	{
		$where[] = array( "s.login_type!=?", \IPS\Session\Front::LOGIN_TYPE_ANONYMOUS );
	}

	if ( ! $flags and ! $limit )
	{
		/* Simple query for PHP processing */
		return iterator_to_array( \IPS\Db::i()->select( 's.id,s.member_id,s.member_name,s.seo_name,s.member_group,s.login_type', array( 'core_sessions', 's' ), $where, 's.running_time ' . $sort )->setKeyField('id') );
	}
	else
	{
		/* Complex group by mode with all the lovely trimmings yum */
		$subWhere = $where;

		/* Ok, this looks odd, but the ONLY_FULL_GROUP_BY bites us here, so selecting max(id) allows us to return a session ID even though we're grouping on member_id */
		$where = array( array( "( core_sessions.id IN(?) OR ( core_sessions.member_id IS NULL AND core_sessions.login_type != ? AND core_sessions.running_time > ?) )", \IPS\Db::i()->select( 'MAX(id)', array( 'core_sessions', 's' ), $subWhere, NULL, NULL, 'member_id' ), \IPS\Session\Front::LOGIN_TYPE_SPIDER, \IPS\DateTime::create()->sub( new \DateInterval( 'PT30M' ) )->getTimeStamp() ) );

		/* Limiting to a user group? */
		if ( $memberGroup )
		{
			$where[] = array( 'core_sessions.member_group=?', $memberGroup );
		}

		/* Just looking for guests? */
		if ( $flags AND ! ( $flags & static::ONLINE_MEMBERS ) )
		{
			$where[] = array( '( core_sessions.member_id IS NULL )' );
		}

		if ( $flags AND ! ( $flags & static::ONLINE_GUESTS ) )
		{
			/* No guests */
			$where[] = array( 'core_sessions.member_id IS NOT NULL' );
		}

		/* Just fetching a count? */
		if ( $flags & static::ONLINE_COUNT_ONLY )
		{
			return \IPS\Db::i()->select( 'COUNT(*)', 'core_sessions', $where )->first();
		}

		return iterator_to_array( \IPS\Db::i()->select( '*', 'core_sessions', $where, 'core_sessions.running_time ' . $sort, $limit )->setKeyField('id') );
	}
}

и как я понял в этом месте вот это приводит к этому

\IPS\Db::i()->select( 'COUNT(*)', 'core_sessions', $where )->first();

так как если это удалить то страница открывается быстро, ну естественно только 30 записями на странице

 

не пойму в чем проблема форум в целом работает хорошо но как только идет вызов этой функции то все падает ((

Поделиться сообщением


Ссылка на сообщение
07/26/19 11:45 (изменено)

Перевел таблицу core_sessions в InnoDB база перестала падать при вызове этой функции getOnlineUsers, но как бы проблему это не решило т.к при вызове этой функции приходится ждать загрузки страницы по несколько секунд, при этом top показывает, что процесс mysql грузит процессор на 100% в остальных случаях все нормально (((

то есть пришлось закрыть доступ к списку онлайн и не использовать блок онлайна стандартный ((

Попробовал экспортировать эту таблицу с 2к записями на локалку(опенсервер) и там не каких проблем в обще нет, страницы где используется эта функция открываются мгновернно даже при таком количестве записей в таблице. Но есть разница в том что при одних и техже записях в этой таблице, форум показывает 350 онлайн, а локалка 750 онлайн, может в этом проблема форум что то ещё обрабатывается с этими онлайн? с ботами онлайн может связано есть может такая настройка где?

В общем может у кого есть мысли в чем проблема и как её решить то?? в обще не могу понять, что это и с чем вдруг стало связано (( может действительно где то накосячил в админке но где

Изменено пользователем avgaz

Поделиться сообщением


Ссылка на сообщение

Вы же клиент в IPS. Создайте тикет. Пусть посмотрят на месте.

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...