Форум сетевых администраторов
Показаны 7 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- VBulletin 3.x.x (http://netadmin.ws/forum/forumdisplay.php?forumid=74)
-- db overload (http://netadmin.ws/forum/showthread.php?threadid=9719)


Помещено Bochkarev_D.S. 21-10-2004 в 10:52:

db overload

Уже спрашивал, но может вопрос прозвучал слишком трудно, упрощаю подачу:
Что в vb3 может жрать 70% 2 СPU PIII и 80% 1Гб памяти при 100-150 online users?

У меня уже нет никаких мыслей, кроме как грешить на таблицу с аттачами. debug mysql query?


Помещено miXei 21-10-2004 в 13:30:

Может все-таки многочисленные запросы к MySql?
Не только аттачи, но и огромная таблица постов например.

__________________
miXei.ru - Дискуссионный клуб


Помещено Bochkarev_D.S. 21-10-2004 в 14:53:

Зарегистрировано: 2498
Тем 8624
Cообщений: 119396
- 150 пользователей за таймаут куки в пределах 600-900 это фигня для двухпроцессорной тачки. Даже если по 30 запросов делать с главной странице простых. А сложных там нету. Самое сложный запрос генерит Топ X


Помещено Bochkarev_D.S. 27-10-2004 в 07:12:

Путем мониторинга всех запросов нашел 2 запроса, которые грузили не по децки mysqld.
Спешу вас уведомить, что хак Top 'X' Stats от AnimeWebby - полное говнов плане построения запроса. Прошу заценить широту души автора



PHP:


$getstats_posters 
= $DB_site->query("SELECT userid, username, posts FROM " . TABLE_PREFIX . "user ORDER BY posts DESC LIMIT 0, $displayrecords");
while (
$getstats_poster = $DB_site->fetch_array($getstats_posters))
{
        eval(
'$stats_posters .= "' . fetch_template('forumhome_stats_poster') . '";');
}

$getstats_members = $DB_site->query("SELECT userid, username, posts, joindate FROM " . TABLE_PREFIX . "user ORDER BY joindate DESC LIMIT 0, $displayrecords");
while (
$getstats_member = $DB_site->fetch_array($getstats_members))
{
        eval(
'$stats_members .= "' . fetch_template('forumhome_stats_member') . '";');
}

// filter out deletion notices if can't be seen
$forumperms = fetch_permissions($forumid);
if (!(
$permissions['forumpermissions'] & CANSEEDELNOTICE))
{
    
$delquery = ", NOT ISNULL(deletionlog.primaryid) AS isdeleted, deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason";
    
$delthreadlimit = "AND deletionlog.primaryid IS NULL";
    
$deljoin = "LEFT JOIN " . TABLE_PREFIX . "deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')";
}
else
{
    
$delquery = ", NOT ISNULL(deletionlog.primaryid) AS isdeleted, deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason";
    
$delthreadlimit = "";
    
$deljoin = "LEFT JOIN " . TABLE_PREFIX . "deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')";
}

$getstats_threads = $DB_site->query("
SELECT thread.threadid, thread.title, thread.lastpost, thread.forumid, thread.replycount, thread.lastposter, thread.dateline, IF(views<=replycount, replycount+1, views) AS views, thread.visible, user.username, user.userid 
$delquery
        FROM " 
. TABLE_PREFIX . "thread AS thread
        LEFT JOIN  " 
. TABLE_PREFIX . "user AS user ON (user.username = thread.lastposter)
$deljoin
WHERE thread.forumid NOT IN (
$excludedforums)
$delthreadlimit
ORDER BY thread.lastpost DESC LIMIT 0, 
$displayrecords");

while (
$getstats_thread = $DB_site->fetch_array($getstats_threads))
{
    
$getstats_thread[title] = unhtmlspecialchars($getstats_thread[title]);
    if (
strlen($getstats_thread[title]) > $threadchars)
    {        
        
$getstats_thread[titletrimmed] = substr($getstats_thread[title], 0, strrpos(substr($getstats_thread[title], 0, $threadchars), ' ')) . '...';
    }
    else
    {
        
$getstats_thread[titletrimmed] = $getstats_thread[title];
    }
    if (
$getstats_thread[lastpost] > $bbuserinfo[lastvisit])
    {
        
$getstats_thread[newpost] = true;
    }
    if (
$getstats_thread[isdeleted])
    {
        
$getstats_thread[isdeleted] = true;
    }
    eval(
'$stats_threads .= "' . fetch_template('forumhome_stats_thread') . '";');
}



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


Помещено fStrange 27-10-2004 в 11:35:

Bochkarev_D.S.
хм.. кучеряво
надо бы и у себя пару хаков то проверить

__________________
Новая жизнь HMM3(Герои 3.5 WoG)http://hmm3.fclan.ru


Помещено Xrobak 28-10-2004 в 16:45:

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


Помещено MCTarakan 28-10-2004 в 20:04:

Bochkarev_D.S. есть какие-то идеи по упрощению данного хака? Так как он довольно нужная вещь и юзеры его просят!

__________________
yMC.ru - хомяк музыканта


Формат времени GMT. Текущее время 10:11.
Показаны 7 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.