Ой! я на форуме! сам не ожидал! где-то с неделю уже не могу влезть!
Да ситуация-то ясная. Без выделенного сервера сайт допускает только очень маленькую нагрузку - не успевает обрабатывать запросы. На выделенный сервер нужно гораздо больше денег. Можно ли как-то поднять сайт без выделенного сервера - вопрос, техподдержка недвусмысленно высказалась, что нельзя (переводим на русский: можно или нельзя, а они больше ничего делать не собираются).
То есть, либо надо искать средтва на перевод сайта в более льготный режим, либо копаться в условиях ннешнего контракта на хостинг и смотреть, вправе мы требовать чего-то лучшего, чем видим сейчас, или мы имеем ровно то что нам положено.
В любом случае, это вопрос к тем, кто имеет административные полномочия и технические возможности для решения таких проблем. А всем остальным есть смысл задуматься и обсудить вопрос, сколько денег мы можем и готовы дать на подъем работы сайта - или мы обойдемся тем, что есть и так?
еще раз говорю, как системный администратор хостинга. дело не в производительности и выделенности сервера, а в большой базе, и куче апдейтов в базу на каждый просмотр страниц форума любым посетителям. Если здесь есть программисты, то они поймут, о чем я говорю, по вот этому вот куску запросов, висящих в базе:
Query | 10 | Sending data | INSERT IGNORE INTO yabbse_log_search_results (ID_SEARCH, relevance, ID_TOPIC, ID_MSG, num_matches) SELECT 90, 1000 * (30 * COUNT(*) / (t.numReplies + 1) + 25 * IF(MAX(m.ID_MSG) < 353135, 0, (MAX(m.ID_MSG) - 353135) / 151344) + 20 * IF(t.numReplies < 200, t.numReplies / 200, 1) + 15 * 0 + 10 * IF(MIN(m.ID_MSG) = t.ID_FIRST_MSG, 1, 0) + 0 * t.isSticky) / 100 AS relevance, t.ID_TOPIC, MAX(m.ID_MSG) AS ID_MSG, COUNT(*) AS num_matches FROM (yabbse_topics AS t, yabbse_messages AS m) WHERE t.ID_TOPIC = m.ID_TOPIC AND (m.body RLIKE '[[:<:]]0[[:>:]]' AND m.body RLIKE '[[:<:]]08628560661276075[[:>:]]') AND m.ID_MSG >= 27 AND m.ID_BOARD IN (6, 41, 7, 39, 8, 5, 59, 40, 51, 9, 11, 12, 43, 13, 55, 56, 57, 58, 14, 15, 60, 17, 18, 20, 21, 45, 22, 23, 46, 24, 25, 27, 26, 28, 30, 31, 32, 10, 52, 53, 54, 16) GROUP BY t.ID_TOPIC LIMIT 6000; |
скриптами форума ведется какойто апдейт базы по результатам поиска. при этом он содержит в себе вложенный запрос, что само по себе не быстро, ну и update table таблицы с большим числом записей это медленная операция, атк как надо перестроить все индексы. В результате, пока этот запрос не выполнится, все запросы к таблицам - участникам ЛОЧАТСЯ. и висят и ждут. Соответственно, ваши браузеры висят и ждут. Вот они висят, в состоянии LOCKED (вторая цифра - время в секундах, которое запрос ждет выполнения предыдущего запроса, заблокировавшего таблицу из которой происходит выборка):
Query | 4 | Locked | DELETE FROM yabbse_log_search_results WHERE ID_SEARCH = 92
Query | 16 | Locked | SELECT c.ID_CAT, b.name AS bname, b.description, b.numTopics, b.memberGroups, b.ID_PARENT, c.name AS cname, IFNULL(mem.ID_MEMBER, 0) AS ID_MODERATOR, mem.realName, b.ID_BOARD, b.childLevel, b.ID_THEME, b.override_theme, b.permission_mode, b.countPosts FROM (yabbse_boards AS b, yabbse_topics AS t) LEFT JOIN yabbse_categories AS c ON (c.ID_CAT = b.ID_CAT) LEFT JOIN yabbse_moderators AS mods ON (mods.ID_BOARD = t.ID_BOARD) LEFT JOIN yabbse_members AS mem ON (mem.ID_MEMBER = mods.ID_MEMBER) WHERE b.ID_BOARD = t.ID_BOARD AND t.ID_TOPIC = 4920
другими словами, при таком нерациональном подходе к работе с базой (частые обновления и удаления из ключевых таблиц, ведущие к блокировке последних), форум не будет быстро работать даже на выделенном сервере. ибо у всего есть свои пределы. когда база была маленькая, это еще как-то работало. база выросла, время блокировок выросло в геометрической прогрессии.
я привел всю диагностику, какую мог. Дальше - дело программиста этого сайта. Только в его ведении отключить ненужный функционал его движка, который мешает вам полноценно пользоваться этим форумом и сайтом.
PS очень жаль, что владелец сайта упорно не желает со своей стороны связываться со службой нашей техподдержки, для прояснения вопроса и получения рекомендаций по ускорению работы скриптов форума. Приходится изучать вопрос самостоятельно, когда изредка приходится по толкиенисткским вопросам заходить на сайт, видеть что он не работает, и принимать временные меры по восстановлению работоспособности..
-- С уважением, Евгений Барсуков, системный администратор Zenоn NSР
« Последнее редактирование: 08-07-2008, 18:24:24 от charliez »
даю подсказку - если отключить поиск по форуму, то все будет летать. потому что запрос, который все тормозит, выполняется даже при обращении к странице поиска, без выполнения на ней всякого поиска. какая-то статистика, видимо, вычисляется. проверено экспериментально.
если это кому-то не нравится - вспомните историю форума torrents.ru. На нем сейчас нет поиска по сообщениям. Потому что это нереальна нагрузка на большую базу сообщений. Это компромисс между работающим сайтом и неработающим поиском, и между неработающим сайтом и в принципе так же неработающим поиском.
ну либо обращаться к разработчикам движка и пенять им на то, что их движок не справляется с поставленной задачей, и было бы неплохо его оптимизировать, выкинуть ненужные запросы, лочащие базы.
За дополнительной информацией , в случае возникновения вопросов, владелец сайта может обратиться напрямую ко мне, минуя службу техподдержки. ICQ в профиле.
« Последнее редактирование: 08-07-2008, 18:58:37 от charliez »
Когда разлогинивает при переходе с главной страницы в подфорум - это глюк браузера или форума? Никто не сталкивался. (С такой мерзостью сталкиваюсь на толкиен.ру, да еще на одном дурацком сайте, который еле работает)
Когда разлогинивает при переходе с главной страницы в подфорум - это глюк браузера или форума? Никто не сталкивался. (С такой мерзостью сталкиваюсь на толкиен.ру, да еще на одном дурацком сайте, который еле работает)
У меня нечто похожее, но менее неудобное - когда захожу на главную страницу (форумов), то в 99% случаев захожу разлогиненным, при этом при переходе в любое другое место форума оказываюсь уже юзером (без ввода логина-пароля, разумеется). И, кстати, править свои сообщения удается раза с четвертого - выдает "не удалось проверить сессию". Браузер - третий Firefox, с другими сайтами проблем нет.
Записан
I am in a secret fourfold word, the blasphemy against all gods of men. Curse them! Curse them! Curse them! Aleister Crowley. Liber AL vel Legis. Ra-Hoor-Khuit:49,50