Быстрый лёгкий надёжный форумный движок
Вы не вошли.
hcs, благодарю!
Здравствуйте.
hcs, использую вашу сборку 1.2.14 и модуль репутации (reputation_mod_2_2_0). С некоторых пор, форум стал жутко тормозить. Загрузка CPU уходит под 100%. Как мог оптимизировал MySQL - эффекта нет. Опытным путем установил, что все тормоза из-за мода репутации. Проявляется это в следующем:
На больших темах, порядка 2000-3000 тысяч сообщений страницы генерируются подолгу, в пределах 7-14 секунд.
Скрин:
Отключение мода в профиле не помогает. Отключение всего мода в административной панели так же не помогает.
После удаления мода правкой кода, нормальная работа форума восстанавливается.
Открываю туже самую тему с 2-мя с лишним тысячями сообщений:
То есть получается, что в период наибольшей активности (30-40 человек онлайн) на больших темах, мод отжирает много ресурсов просчитывая пользователям репутацию (у многих по 20-30 плюсов/минусов)
Вопрос, есть ли возможность что-то подправить? Мод нравится, да и пользователи привыкли к репутации.
Редактировался perets (2007-10-05 08:57:49)
Подправить можно, но это не просто взять и чтото там удалить, что-то вставить копи-пэйстом. Тут фундаментальная ошибка, хотя и легкоисправимая, с точки зрения разработчика, т.е. не придется все переписывать с нуля
Решение такое:
перестать ее подсчитывать для каждого пользователя и хранить общие значения в таблице users, как и было в первых вариантах. Я почемуто прощёлкал этот момент и допустил перегрузку.
Изменение репутации тоже переделать - записывать общий счетчик положительных и отрицательных значений в профиль. Таким образом нагрузка вернется к обычному состоянию. Эта проблема уже поднималась на панресе.
Вобщем решить проблему можно, и я наверно переделаю мод, когданибудь. Но сейчас у меня есть много других забот и мод стоит в самом дальнем углу, хотя при должном стимулировании я конечно пересмотрю свои планы.
Добавлено спустя 4 минуты 33 секунды:
Посмотрел одну из тем у тебя на форуме - 40 секунд, ужас. Отключи её пока лучше, удалив из запросов выборку SUM(rep)
Обновление вобщем готово, осталось сделать скрипт, который сконвертирует данные, чтобы можно было работать в новом формате.
Благодарю за исчерпывающий ответ.
Посмотрел одну из тем у тебя на форуме - 40 секунд, ужас. Отключи её пока лучше, удалив из запросов выборку SUM(rep)
Сейчас разворачиваю вашу последню сборку 1.2.15... хочу посмотреть punishments_system. Как он себя показал? Подобных ситауция с производительностью замечено не было?
Добавлено спустя 1 минуту 35 секунд:
Обновление вобщем готово, осталось сделать скрипт, который сконвертирует данные, чтобы можно было работать в новом формате
О.. пока я тут ушами хлопал, уже обновление готово вот это производительность труда)
хочу посмотреть punishments_system
Не надо ее смотреть. Сырое и недоделаное. Я даже не знаю как она работает, потомучто нет такой информации. Здесь у когото из пользователей он установлен, по-моему у spycam, спроси у него. Но я бы не стал ставить.
О.. пока я тут ушами хлопал, уже обновление готово вот это производительность труда)
обновление готово, но не выложено. кроме того нужен апгрейд БД, это не тяп ляп и у меня нет скрипта.
Это можно сделать волженными sql-запросами, но их надо придумать, такчто ждите.
У меня вроде таких проблем нет - но я тоже буду благодарен за обновление !!!
Обновление.
Делаем бэкап viewtopic.php
Качаем архив, распаковываем. Переводим форум в режим технических работ, копируем в корень upgrade.php из архива, выполняем его, удаляем.
Если он выполнился без ошибок, продолжаем, иначе пишем сюда и прекращаем обновление.
Открываем viewtopic.php, находим
SUM(r.rep_plus) AS count_rep_plus, SUM(r.rep_minus) AS count_rep_minus
меняем на
u.rep_plus AS count_rep_plus, u.rep_minus AS count_rep_minus
Копируем reputation.php из архива поверх существующего.
Переводим форум в нормальный режим, смотрим последствия. Если все работате - радуемся, если не работает - отключаем в админке репутацию и даем сюда копии ошибок и прочего. Я проверял на чистом форуме, установил мод и потом это обновление, все работало без ошибок.
Редактировался hcs (2007-10-05 18:35:27)
На панресе обновлен мод: http://www.punres.org/files.php?pid=184
Включает в себя инструкцию и скрипт для обновления с версии 2.2.0 до версии 2.2.1.
Новая версия решает проблему больших топиков.
вначале файл апгрейд ругнулся на какой то синтакс, потом ещё раз его нажал вывел это
File: C:\xampp\htdocs\go\upgrade.php
Line: 18PunBB reported: Unable to add column reputation_minus into table foo_users.
Database reported: Duplicate column name 'rep_minus' (Errno: 1060)
Добавлено спустя 5 минут 57 секунд:
ошибку про синтаксис не смог повторить.
Добавлено спустя 10 минут 6 секунд:
хотя вот
File: C:\xampp\htdocs\go\upgrade.php
Line: 25PunBB reported: Unable to update reputation data for users
Database reported: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' rep_minus= WHERE id=2' at line 1 (Errno: 1064)
Failed query: UPDATE foo_users SET rep_plus=, rep_minus= WHERE id=2
Редактировался spycam (2007-10-08 12:25:34)
cпасибо
spycam, я не могу воспроизвести ошибку
Опиши подробнее, архив с панреса? Репа установлена?
конечно все установлено - репа последняя. может тебе привести структуру таблиц?
ЗЫ может я что-то не понял, но зачем в файле апгрейд.пхп вот это, если поля такие в установленном уже есть
$result = $db->query('ALTER TABLE '.$db->prefix.'users ADD COLUMN rep_minus INT(11) UNSIGNED DEFAULT 0') or error('Unable to add column reputation_minus into table '.$db->prefix.'users.', __FILE__, __LINE__, $db->error());
$result = $db->query('ALTER TABLE '.$db->prefix.'users ADD COLUMN rep_plus INT(11) UNSIGNED DEFAULT 0') or error('Unable to add column rep_plus into table '.$db->prefix.'users.', __FILE__, __LINE__, $db->error());
Добавлено спустя 1 минуту 25 секунд:
щас посмотрел там- все нормально - то есть структура полей таже.
Добавлено спустя 1 минуту 37 секунд:
мускл 5
В установленном нет таких полей, по крайней мере не должно быть. Инсталлер в 2.2.0 мудрит с полями, чтобы перебросить данные и потом дропает эти поля, так что их быть не должно.
Но это вобщемто не проблема и не предмет ошибок.
Добавлю проверки и специально для тебя выложу подправленный апгрейд, без создания этих двух полей, но с заполнением их данными.
Редактировался hcs (2007-10-09 05:12:55)
все работает теперь
Спасибо
АХТУНГ! стали пропадать минуса 0_0. Был вопрос сперва от нескольких пользователей "почему было -Х, а стало -0" Не обращал внимания... потом у меня самого пропало -3 или -4 стало -0. Т.е. минуса пропали (которые я хорошо помню)... полез в базу и в базе их нет 0_0 !!!
в админке и в самом профиле пользователя можно отключить рейтинг - может ли пользователь сам его включить?
Отключенный админом рейтинг сам пользователь включить не сможет, это принудительное отключение.
Кстати, я думаю что надо добавить в репу опцию "анонимно".
Т.е. пользователь может побояться комуто влепить минус, а под личиной "анонимно" влепит. Это придаст интриги, будет появляться уникальный контент на тему "Опять меня минусуют какието негодяи!" и тд
АХТУНГ! стали пропадать минуса 0_0. Был вопрос сперва от нескольких пользователей "почему было -Х, а стало -0" Не обращал внимания... потом у меня самого пропало -3 или -4 стало -0. Т.е. минуса пропали (которые я хорошо помню)... полез в базу и в базе их нет 0_0 !!!
Может это быть изза того, что сперва "границ" количества сообщений, с которых разрешается изменять рейтинг небыло... Постнаавили - +, а потом я установил лимит 50 сообщений, только тогда можно изменять рейтинги. И ранние минуса/плюсы каким то хреном потерлись?
Подскажите как убрать добавление причины, за которую изменяют статус. Хочется, чтобы просто без причины статус можно было менять.
Никак, этот мод был задуман как альтернатива первой репутации от Сакузы, там как раз тупо жмешь плюс или минус без объяснения причны.
hcs
А где можно скачать мод Сакузы?
на панресе
юзеры заколебали - накручивают счетчики - хочу усложнить жизнь - как сделать чтобы в форме причина требовалось ввести не менее, например, 5 символов?