Перейти к контенту

Помогите, БД падает


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

Второй день глючит форум

Новых модов за эту неделю вроде бы не ставил. Только предупреждающие теги, но не думаю что они могли как-то принципиально нагрузить серв.

 

Периодически выдаётся сообщение о том что глючит SQL

 

Например

 

mySQL query error: SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=125)
		           WHERE ibf_topics.forum_id=12 and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > 0) ORDER BY pinned DESC, last_post DESC LIMIT 0, 20

mySQL error: Server shutdown in progress
mySQL error code: 
Date: Tuesday 07th of March 2006 04:57:41 PM

или так

Warning: mysql_query(): Unable to save result set in /home/804/s966/public_html/forum/sources/Drivers/mySQL.php on line 103


There appears to be an error with the RPG-Zone Forums database.
You can try to refresh the page by clicking here, if this does not fix the error, you can contact the board administrator by clicking here 

Error Returned

mySQL query error: SELECT p.*,
m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,
m.icq_number,
m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn,
g.g_id, g.g_title, g.g_icon, m.rep, g.g_dohtml 
FROM ibf_posts p
LEFT JOIN ibf_members m ON (p.author_id=m.id)
LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)

WHERE p.topic_id=246 and p.queued != 1
ORDER BY p.pid asc LIMIT 1890, 30

mySQL error: Server shutdown in progress
mySQL error code: 
Date: Tuesday 07th of March 2006 03:49:25 PM

 

Это всё к тому, что у меня самого ещё хреновый коннект, и так страница открывается по 100 лет.

Бесит, слов нет =\

 

От суппорта хостера письмо, будто так это и должно быть.

 

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

mySQL error: Server shutdown in progress - это значит сервер снял Ваш запрос

по timeout. Такое бывает при сложном поиске в непроиндексированных таблицах

(или индексы не по нужным полям сделаны)

 

С уважением, Support

 

Что делать?

Где виноватого найти?

 

ipb 1.3 модов много и разных, но до позавчера всё было тип-топ.

Пользователей у меня обычно всего ничего. В лучшие времена десяток одновременно в онлайне бывает.

 

==

Причём иногда всё хорошо.. А иногда как затормозит =(

Ссылка на комментарий
Поделиться на других сайтах

Server shutdown in progress - никогда не сталкивался, но насколько я знаю англиский, то "Отключение сервера в процессе" означает несколько не это, хотя кто знает.

 

Если хостер прав - возможно слетели индексы в таблицах, гляньте в phpMyAdmin.

Ссылка на комментарий
Поделиться на других сайтах

Да вроде бы нет. Например вот из таблицы ibf_posts

 

Индексы :

Имя ключа	Тип	Количество элементов	Действие	Поле	
PRIMARY 	PRIMARY 	32444  	 	 	pid 	
topic_id 	INDEX 	Нет  	 	 	topic_id 	
author_id 	
author_id 	INDEX 	Нет  	 	 	author_id 	
forum_id 	INDEX 	Нет  	 	 	forum_id 	
post_date 	
post 	FULLTEXT 	Нет  	 	 	post 	1 	
post_date 	INDEX 	Нет  	 	 	post_date 	
ip_address 	INDEX 	Нет  	 	 	ip_address

Ссылка на комментарий
Поделиться на других сайтах

Вроде то.

 

Попросите тех-поддержку, помочь Вам выставить индексы правильно.

 

Предварительно сделайте дамп БД, а то знаем мы их, если выставят - сверьте дампы, покажите результат, крайне интересно :-))

Ссылка на комментарий
Поделиться на других сайтах

ServerShutDown in progress выдаётся тогда когда MySQL откатывает запрос. Например, выполняет команду KILL или просто демон завершает работу.

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

 

PALADIN+

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

 

Ещё вопрос: после такого сообщения сервер дальше работает или всё прерывается?

 

Ещё может быть что у тебя зацикливается один и тот же запрос (с помощью неправильно написанного/модифицированного скрипта), и апач откатывает запрос на его трансляцию. Правда при этом всё должно откатываться молча.

Ссылка на комментарий
Поделиться на других сайтах

Ладно, возможно я смогу что-то оптимизировать и без вмешательства хостера. В любом случае, на будущее пригодится.

 

Главная страница

[ Script Execution time: 0.1131 ] [ 11 queries used ] [ GZIP включён ]

 

Список топиков и вложенных форумов

[ Script Execution time: 0.3465 ] [ 17 queries used ] [ GZIP включён ]

 

Топик

[ Script Execution time: 0.3208 ] [ 21 queries used ] [ GZIP включён ]

 

===

Видимо по количеству запросов к БД, я здесь рекордсмен.

Включил SQL отладку, там список всех запросов к БД

Возник вопрос -

а) может быть там что-то лишнее затесалось?

б) Стоят какие-то нерациональные моды?

с) Несколько раз подряд выполняется один и тот же запрос?

 

Что-то из этого может быть лишним (сильно загружающим БД)

Некоторые моды я бы снёс

 

Список форумов

1

SELECT id, member_id, running_time, location FROM ibf_sessions WHERE id='*********' and ip_address='**********'

 

2

SELECT moderator.mid as is_mod, moderator.allow_warn, m.allow_anon, m.allow_rep, m.rep, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.forums_read, m.board_read, m.mark_after, m.view_hints, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=125

 

3

DELETE FROM ibf_log_topics WHERE logTime < 1140508937 AND mid='125'

 

4

UPDATE ibf_sessions SET member_name='Вейлор',member_id='125',member_group='4',in_forum='0',in_topic='0',in_profile='',login_type='',running_time='1141804937',location='SC,,' WHERE id='******'

 

5

SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (c.cssid=s.css_id) WHERE s.sid=1

 

6

SELECT fid, logTime FROM ibf_log_forums WHERE mid='125'

 

7

SELECT f.*, c.id as cat_id, c.position as cat_position, c.state as cat_state, c.name as cat_name, c.description as cat_desc, c.image, c.url, m.member_name as mod_name, m.member_id as mod_id, m.is_group, m.group_id, m.group_name, m.mid FROM ibf_forums f, ibf_categories c LEFT JOIN ibf_moderators m ON (f.id=m.forum_id) WHERE c.id=f.category and c.id='1' ORDER BY c.position, f.position

 

8

SELECT s.id, s.member_id, s.member_name, s.login_type, g.suffix, g.prefix FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) WHERE running_time > 1141804037 ORDER BY s.running_time DESC

 

9

SELECT id, name, bday_day as DAY, bday_month as MONTH, bday_year as YEAR FROM ibf_members WHERE bday_day=8 and bday_month=3

 

10

SELECT * FROM ibf_stats

 

11

SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set=2

 

 

Список топиков

 

SELECT id, member_id, running_time, location FROM ibf_sessions WHERE id='***************' and ip_address='********'

 

SELECT moderator.mid as is_mod, moderator.allow_warn, m.allow_anon, m.allow_rep, m.rep, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.forums_read, m.board_read, m.mark_after, m.view_hints, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=125

 

DELETE FROM ibf_log_topics WHERE logTime < 1140508934 AND mid='125'

 

UPDATE ibf_sessions SET member_name='Aaeei?',member_id='125',member_group='4',in_forum='3',in_topic='0',in_profile='',login_type='',running_time='1141804934',location='SF,,' WHERE id='***************'

 

SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (c.cssid=s.css_id) WHERE s.sid=1

 

SELECT fid, logTime FROM ibf_log_forums WHERE mid='125'

 

SELECT f.*, c.id as cat_id, c.name as cat_name FROM ibf_forums f LEFT JOIN ibf_categories c ON (c.id=f.category) WHERE f.id=3

 

SELECT f.id as forum_id, f.parent_id, f.subwrap, f.sub_can_post, f.name as forum_name, f.position, f.redirect_on, f.read_perms, c.id as cat_id, c.name FROM ibf_forums f LEFT JOIN ibf_categories c ON (c.id=f.category) WHERE c.state IN (1,2) ORDER BY c.position, f.position

 

SELECT f.*, m.member_name as mod_name, m.member_id as mod_id, m.is_group, m.group_id, m.group_name, m.mid FROM ibf_forums f LEFT JOIN ibf_moderators m ON (f.id=m.forum_id) WHERE parent_id='3' ORDER BY position

 

SELECT tid, logTime FROM ibf_log_topics WHERE mid='125' AND fid='3'

 

SELECT COUNT(tid) as max FROM ibf_topics WHERE forum_id=3 and approved=1 and (pinned=1 or last_post > 0)

 

SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=125) WHERE ibf_topics.forum_id=3 and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > 0) ORDER BY pinned DESC, last_post DESC LIMIT 0, 20

 

SELECT topic_id, post FROM ibf_posts WHERE topic_id IN (726, 1124, 1107, 994, 1114, 1109, 1099, 804, 827, 967, 979, 1044, 1043, 1040, 1001, 987, 817, 972, 973, 959) AND new_topic=1

 

SELECT topic_id, post FROM ibf_posts WHERE pid IN (0,34720,34635,34590,34493,34498,34325,34150,33431,33370,33307,33125,32297,32273
,32204,31320,30648,30581,30445,30387,29915)

 

UPDATE ibf_log_forums SET logTime='1141804935' WHERE fid='3' AND mid='125'

 

SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, t.forum_id, m.org_perm_id FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) LEFT JOIN ibf_topics t ON (t.tid=s.in_topic) LEFT JOIN ibf_members m on (s.member_id=m.id) WHERE (s.in_forum=3 OR t.forum_id=3) AND s.running_time > 1141804035 ORDER BY s.running_time DESC

 

SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set=2

 

 

 

 

В топике

 

 

SELECT t.*, f.topic_mm_id, f.name as forum_name, f.quick_reply, f.id as forum_id, f.read_perms, f.reply_perms, f.parent_id, f.use_html, f.start_perms, f.allow_poll, f.password, f.posts as forum_posts, f.topics as forum_topics, f.upload_perms, f.show_rules, f.rules_text, f.rules_title, c.name as cat_name, c.id as cat_id FROM ibf_topics t, ibf_forums f , ibf_categories c WHERE t.tid=1141 and f.id = t.forum_id and f.category=c.id

 

 

SELECT id, member_id, running_time, location FROM ibf_sessions WHERE id='*****************' and ip_address='**********'

 

SELECT moderator.mid as is_mod, moderator.allow_warn, m.allow_anon, m.allow_rep, m.rep, m.id, m.name, m.mgroup, m.password, m.email, m.restrict_post, m.view_sigs, m.view_avs, m.view_pop, m.view_img, m.auto_track, m.mod_posts, m.language, m.skin, m.new_msg, m.show_popup, m.msg_total, m.time_offset, m.posts, m.joined, m.last_post, m.last_visit, m.last_activity, m.dst_in_use, m.view_prefs, m.org_perm_id, m.temp_ban, m.sub_end, m.forums_read, m.board_read, m.mark_after, m.view_hints, g.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) LEFT JOIN ibf_moderators moderator ON (moderator.member_id=m.id OR moderator.group_id=m.mgroup ) WHERE m.id=125

 

DELETE FROM ibf_log_topics WHERE logTime < 1140508876 AND mid='125'

 

UPDATE ibf_sessions SET member_name='Aaeei?',member_id='125',member_group='4',in_forum='59',in_topic='1141',in_profile='',login_type='',running_time='1141804876',location='ST,,' WHERE id='*****************'

 

UPDATE ibf_members SET last_activity='1141804876' WHERE id=125

 

SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (c.cssid=s.css_id) WHERE s.sid=1

 

 

SELECT fid, logTime FROM ibf_log_forums WHERE mid='125'

 

 

SELECT logTime FROM ibf_log_topics WHERE tid='1141' AND mid='125'

 

 

SELECT f.id as forum_id, f.parent_id, f.subwrap, f.sub_can_post, f.name as forum_name, f.position, f.redirect_on, f.read_perms, c.id as cat_id, c.name FROM ibf_forums f LEFT JOIN ibf_categories c ON (c.id=f.category) WHERE c.state IN (1,2) ORDER BY c.position, f.position

 

 

UPDATE ibf_topics SET views=views+1 WHERE tid='1141'

 

 

UPDATE ibf_log_topics SET logTime='1141804876' WHERE tid='1141' AND mid='125'

 

 

UPDATE ibf_log_forums SET logTime='1141804876' WHERE fid='59' AND mid='125'

 

 

SELECT f.id as forum_id, f.name as forum_name, c.id, c.name FROM ibf_forums f, ibf_categories c WHERE f.id=3 AND c.id=f.category

 

 

SELECT id, title, pips, posts from ibf_titles ORDER BY posts DESC

 

 

SELECT s.member_id FROM ibf_sessions s, ibf_posts p WHERE p.topic_id='1141' and p.queued !='1' AND s.member_id<>'0' AND s.running_time > 1141803976 AND s.member_id=p.author_id AND s.login_type !='1'

 

SELECT p.*, m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,
m.icq_number, m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn, g.g_id, g.g_title, g.g_icon, m.rep, g.g_dohtml FROM ibf_posts p LEFT JOIN ibf_members m ON (p.author_id=m.id) LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE p.topic_id=1141 and p.queued != 1 ORDER BY p.pid asc LIMIT 0, 30

 

 

SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, m.org_perm_id FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) LEFT JOIN ibf_members m on (s.member_id=m.id) WHERE s.in_topic=1141 AND s.running_time > 1141803976 ORDER BY s.running_time DESC

 

SELECT * FROM ibf_emoticons WHERE clickable='1'

 

 

SELECT trid FROM ibf_tracker WHERE topic_id=1141 AND member_id=125

 

 

SELECT macro_value, macro_replace FROM ibf_macro WHERE macro_set=2

Ссылка на комментарий
Поделиться на других сайтах

Посмотрите. Открытие списка топиков!

 

Список процессов

 

Команда Query

 

Время 11 !!!!

 

Статус Copying to tmp table

 

 

SQL-запрос

 

SELECT DISTINCT (
ibf_posts.author_id
), ibf_topics . * 
FROM ibf_topics LEFT JOIN ibf_posts

? Появляется в списке топиков. Что там может быть? Вспоминается только топик-хинтс.

неужели он мне стал вешать БД? Ведь я его достаточно давно поставил, а замечать неполадки стал всего несколько дней назад.

Ссылка на комментарий
Поделиться на других сайтах

Возможно phpMyAdmin его не полностью показывает?

Либо он выполняется частично, и когда я обновил ркно процессов была только часть.

Вот где я смотрел.

http://rpg-zone.ru/users/forum/db1.jpg

 

В описании мода топик-хинтс есть похожий фрагмент.

 

 

файл ./sources/forums.php
// *************************************************************
// Возвращаем обратно штатные запросы.
// ---------------
// Найти:
// ---------------

$query = "SELECT DISTINCT(ip.author_id), t.*, p.post, lp.post as l_post
FROM ibf_topics t
LEFT JOIN ibf_posts ip ON (t.tid=ip.topic_id AND ip.author_id=".$ibforums->member['id'].")
LEFT JOIN ibf_posts p ON (t.tid=p.topic_id AND p.new_topic=1)
LEFT JOIN ibf_posts lp ON (t.tid=lp.topic_id AND lp.post_date=t.last_post)
WHERE t.forum_id=".$this->forum['id']."
and t.approved=1
and (t.pinned=1 or t.last_post > $Prune)";

// ---------------
// Заменить на:
// ---------------

$query = "SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics
	   LEFT JOIN ibf_posts ON
	   (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=".$ibforums->member['id'].")
	   WHERE ibf_topics.forum_id=".$this->forum['id']."
	   and ibf_topics.approved=1
	   and (ibf_topics.pinned=1 or ibf_topics.last_post > $Prune)";

 

Причём обычно список топиков с хинтами открывается нормально :0

 

Вот тоже, не верх скорости.

 

localhost Query врямя 2 статус end

 

DELETE FROM ibf_log_topics WHERE logTime <1140604869 AND mid = '616'

 

Может это просто хостер тупит у себя на серве?

 

А вот простое действие - открытие профиля.

 

http://rpg-zone.ru/users/forum/db2.jpg

 

Я в недоумении и ярости!

 

Открытие профиля завершается

 

Warning: mysql_query(): Unable to save result set in /home/804/s966/public_html/forum/sources/Drivers/mySQL.php on line 103

 

 

 

There appears to be an error with the RPG-Zone Forums database.

You can try to refresh the page by clicking here, if this does not fix the error, you can contact the board administrator by clicking here

 

Error Returned

mySQL query error: SELECT m.id, m.name, me.photo_type, me.photo_location, me.photo_dimensions FROM ibf_member_extra me
				  LEFT JOIN ibf_members m ON me.id=m.id
				WHERE m.id=94

mySQL error: Server shutdown in progress
mySQL error code: 
Date: Thursday 09th of March 2006 02:29:13 PM

We apologise for any inconvenience

 

В профиле точно тормозить нечему! Правильно?

Ссылка на комментарий
Поделиться на других сайтах

Тут можно много чего оптимизировать, но в принципе более или менее.

Я могу сказать, как сделано у меня.

 

1) У меня кешируется ibf_groups, поэтому у меня из всех запросов исчезло LEFT JOIN ibf_groups. Т.е. "джойн" у меня выполняется программно. Это помогло облегчить запрос. А в некоторых запросах прооптимизировать использование индекса (например, запрос по онлайн юзерам в списке топиков, в топике, в root).

 

2) Вот этот запрос

DELETE FROM ibf_log_topics WHERE logTime < 1140508937 AND mid='125'

у тебя удаляет старые логи топиков.

Я бы поставил эту феню на крон.

 

3)

SELECT s.*, t.template, c.css_text FROM ibf_skins s LEFT JOIN ibf_templates t ON (t.tmid=s.tmpl_id) LEFT JOIN ibf_css c ON (c.cssid=s.css_id) WHERE s.sid=1

Это загрузка элементов скина.

У меня здесь загружается только одна таблица ibf_skins.*, а скелет темплейта и css у меня загружаются из текстового файла, т.е. у меня не джойнятся таблицы, а значит и запрос легче.

 

4)

SELECT f.*, c.id as cat_id, c.position as cat_position, c.state as cat_state, c.name as cat_name, c.description as cat_desc, c.image, c.url, m.member_name as mod_name, m.member_id as mod_id, m.is_group, m.group_id, m.group_name, m.mid FROM ibf_forums f, ibf_categories c LEFT JOIN ibf_moderators m ON (f.id=m.forum_id) WHERE c.id=f.category and c.id='1' ORDER BY c.position, f.position

Здесь моя оптимизация уже стоит :)

 

5)

SELECT COUNT(tid) as max FROM ibf_topics WHERE forum_id=3 and approved=1 and (pinned=1 or last_post > 0)

Этот запрос на получения общего количества топиков. Я убираю его опционально.

Т.е. если стоит "Показывать всё" (а я так по умолчанию и сделал), то я его не выполняю, ибо он тяжёлый.

 

6)

SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=125) WHERE ibf_topics.forum_id=3 and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > 0) ORDER BY pinned DESC, last_post DESC LIMIT 0, 20

 

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

Только для того, чтобы показать в каких топиках юзер отметился в каких нет (чёрная точка на конверте топика).

У меня разбито на два.

 

Собственно это и объсняет твои восклицания:

Посмотрите. Открытие списка топиков!

 

Список процессов

 

Команда Query

 

Время 11 !!!!

Этот запрос очень тормозит в условиях большой занятости мускула.

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

 

7)

SELECT topic_id, post FROM ibf_posts WHERE topic_id IN (726, 1124, 1107, 994, 1114, 1109, 1099, 804, 827, 967, 979, 1044, 1043, 1040, 1001, 987, 817, 972, 973, 959) AND new_topic=1

Это нестандартный запрос. По-видимому это Topic Hints причём хороший Topic Hints :D Видимо в редакции Valer'ы.

 

Но. Раз у тебя есть этот запрос, зачем предыдущий?

Можно ведь выбирать без условия new_topic=1, а сравнивать внутри цикла обработки. А из прошлого убрать связку на ibf_posts и медленный DISTINCT.

 

8)

SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, t.forum_id, m.org_perm_id FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) LEFT JOIN ibf_topics t ON (t.tid=s.in_topic) LEFT JOIN ibf_members m on (s.member_id=m.id) WHERE (s.in_forum=3 OR t.forum_id=3) AND s.running_time > 1141804035 ORDER BY s.running_time DESC

Из этого запроса у меня выкинуты все джойны, а сама ibf_sessions поставлена на кеширование в память.

 

9)

SELECT s.member_id FROM ibf_sessions s, ibf_posts p WHERE p.topic_id='1141' and p.queued !='1' AND s.member_id<>'0' AND s.running_time > 1141803976 AND s.member_id=p.author_id AND s.login_type !='1'

Это тоже не стандартный запрос. По виду не могу точно понять для чего он..

Видимо для Offline/Online статус.

ИМХО тоже нерационален.

У меня online/offline сделана джойном на запрос постов.

 

10)

SELECT s.member_id, s.member_name, s.login_type, s.location, g.suffix, g.prefix, g.g_perm_id, m.org_perm_id FROM ibf_sessions s LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) LEFT JOIN ibf_members m on (s.member_id=m.id) WHERE s.in_topic=1141 AND s.running_time > 1141803976 ORDER BY s.running_time DESC

Аналогично 8.

 

11)

SELECT trid FROM ibf_tracker WHERE topic_id=1141 AND member_id=125

Для этого запроса я оптимизировал индекс.

 

В описании мода топик-хинтс есть похожий фрагмент.

У тебя стоит не этот топик-хинтс, я уже говорил. Если стоит этот, то понятно почему у тебя всё падает...

 

 

Анамнез:

Всё у тебя как в стандарте, не должно из-за этого чего-либо падать.

Проверь запросы 7) 8) (по цифрам моего поста)

Просто нет смысла утежелять 7, если в 8 всё это достаётся за милую душу. Кстати, если в 8 не топик хинтс, то что же это? ;)

Я так думаю, что именно он.

 

 

 

В профиле точно тормозить нечему! Правильно?

Правильно. Просто я ж говорю, что "Server shutdown in progress" не выдаётся при тормозах.

Мне кажется, это глюки хостера, его мускуловского демона.

Ссылка на комментарий
Поделиться на других сайтах

пардон за оффтопик небольшой, но:

 

Song

SHUTDOWN QUERY: Select Query
SELECT * FROM ibf_skin_sets WHERE set_skin_set_id=18 --- ibf_skin_sets

MySQL time: 0.24806 (на форуме 3 шаблона)

 

и

Select Query
SELECT id, name, last_activity, posts, last_post, last_ip, login_anonymous, mgroup FROM ibf_members WHERE id != 0 AND mgroup != 2 AND (last_activity BETWEEN '1141851600' AND '1141937999') ORDER BY last_activity --- ibf_members

MySQL time: 0.16695

 

Не подскажете как "облегчить" эти запросы? может каким-нибудь кешированием в файлы?

Ссылка на комментарий
Поделиться на других сайтах

Первый запрос - проиндексировать set_skin_set_id.

Второй - трудно сказать.. Надо смотреть его EXPLAIN. Возможно хватит проиндексировать last_activity.

Ссылка на комментарий
Поделиться на других сайтах

6)

SQL

SELECT DISTINCT(ibf_posts.author_id), ibf_topics.* FROM ibf_topics LEFT JOIN ibf_posts ON (ibf_topics.tid=ibf_posts.topic_id AND ibf_posts.author_id=125) WHERE ibf_topics.forum_id=3 and ibf_topics.approved=1 and (ibf_topics.pinned=1 or ibf_topics.last_post > 0) ORDER BY pinned DESC, last_post DESC LIMIT 0, 20

 

 

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

Только для того, чтобы показать в каких топиках юзер отметился в каких нет (чёрная точка на конверте топика).

У меня разбито на два.

 

Собственно это и объсняет твои восклицания:

Цитата

Посмотрите. Открытие списка топиков!

 

Список процессов

 

Команда Query

 

Время 11 !!!!

 

Этот запрос очень тормозит в условиях большой занятости мускула.

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

Жутко тормозной запрос.

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

Ссылка на комментарий
Поделиться на других сайтах

Song

 

У меня кешируется ibf_groups, поэтому у меня из всех запросов исчезло LEFT JOIN ibf_groups. Т.е. "джойн" у меня выполняется программно.

 

а сама ibf_sessions поставлена на кеширование в память.

можно немного по-подробнее про кеширование запросов, плиз?

 

как именно ты их кэшируешь и где хранится этот кэш?

Ссылка на комментарий
Поделиться на других сайтах

Song, спасибо посмотрю что можно сделать.

 

 

=====

Отключил как и рекомендовалось

"Выделять темы с новыми ответами на форуме?"

Было

[ Script Execution time: 1.8647 ] [ 17 queries used ] [ GZIP включён ]

 

Стало

[ Script Execution time: 0.3050 ] [ 18 queries used ] [ GZIP включён ]

 

Это как? 0_o не понимаю. На один запрос стало больше, хотя действие мы убрали.

 

 

 

Там-же, рядом с этой настройкой есть.

 

Отключить функцию 'Пользователи просматривающие этот форум'?

(Этим Вы сэкономите по одному запросу, для каждого просмотра форума) Да Нет

 

 

Отключить функцию 'Пользователи просматривающие эту тему'?

(Этим Вы сэкономите по одному запросу, для каждого просмотра темы) Да Нет

 

Как у этого запроса с нагрузкой на БД?

 

Топик хинтс у меня такой.

TopicHints v1.40 for Invision Power Board v1.3F

// © UriSoft 2004-2005

Ссылка на комментарий
Поделиться на других сайтах

2ImUgh

у меня при старте index.php выполняется

SELECT * FROM ibf_groups

Табличка небольшая поэтому никакого значения этот запрос не имеет. Данные после этого запроса накапливаются в глобальный массив в php.

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

 

Что касается ibf_session то у неё сменён тип с MyISAM на HEAP, ну и таблица собственно вся перебрана.

 

Отключил как и рекомендовалось

"Выделять темы с новыми ответами на форуме?"

Было

[ Script Execution time: 1.8647 ] [ 17 queries used ] [ GZIP включён ]

 

Стало

[ Script Execution time: 0.3050 ] [ 18 queries used ] [ GZIP включён ]

Ну зато видишь как стало меньше выполняться?

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

 

Там-же, рядом с этой настройкой есть.

 

Отключить функцию 'Пользователи просматривающие этот форум'?

(Этим Вы сэкономите по одному запросу, для каждого просмотра форума) Да Нет

 

 

Отключить функцию 'Пользователи просматривающие эту тему'?

(Этим Вы сэкономите по одному запросу, для каждого просмотра темы) Да Нет

Ну вот это и есть 8 и 11.

Ну, если эта инфа не сильно шибко нужна, то лучше бы отключить.

 

 

Топик хинтс у меня такой.

TopicHints v1.40 for Invision Power Board v1.3F

// © UriSoft 2004-2005

Ну значит UriSoft исправился :D

Ссылка на комментарий
Поделиться на других сайтах

PALADIN+

Это как? 0_o не понимаю. На один запрос стало больше, хотя действие мы убрали.

чтобы все это отлавливать включи на форуме 3ий уровень отладки, чтобы показывались все запросы к БД

а чтобы это не увидели юзеры добавь, например, в functions.php в функцию do_output перед

if ($ibforums->vars['debug_level'] > 0)

 

следующее:

 

if ($INFO['debug_level']>1 && !$ibforums->member['g_is_supmod'])
{  $INFO['debug_level']=1;  }

 

Song

у меня при старте index.php выполняется

Ок, я так и думал. Действительно, сама по себе таблица легкая, а джойнить её к монстрам уже тяжело.

 

Что касается ibf_session

тут мне тяжелее :D

Ссылка на комментарий
Поделиться на других сайтах

Почитал темку, для себя отметил как "Дожна быть прочитанной)"

У себя отключил пару функций из CPU Saving & Optimization:

1) Update Topic Views Immediately

 

2) Mark topics a user has posted when displaying a forum?

 

Форум стал "летать".

0.3724 а было 3.4ххх

Ссылка на комментарий
Поделиться на других сайтах

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

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.