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

Необходимо немного оптимизировать скрипт


alextan

Вопрос

В последнее время хостер стал отмечать то, что мой форум начал пожирать почти в 2 раза больше ресурсов. До этого был взлом сайта (форум и сайт на одном домене) убили главную страницу. После восстановления главной и удаления нескольких файлов со скриптами сайт заработал вновь, но... главная страница форума начала перегружать сверх нормы выделенный лимит. Посещение форума невысокое, порядка 1000 посетителей в день. В связи с этим прошу помощи в решении этого вопроса и готов платить. Жду предложений в личку.

Простите если создал тему не в нужном подфоруме, иного места не нашел.

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

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

  • 0
Я боюсь здесь дело не в скрипте,а дело в том что у тя в системе думаю хакера сидят.Меняй пароли от всего что можно и нельзя.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Я боюсь здесь дело не в скрипте,а дело в том что у тя в системе думаю хакера сидят.Меняй пароли от всего что можно и нельзя.

А смысл им сидеть? Пароли менял и не раз.

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

  • 0

nikitah, ты похоже прав, т.к. нагрузка скачет странным образом и это нагрузка не прямо пропорциональна кол-ву пользователей в момент времени. Очень жаль, что на данном форуме не оказалось спецов или их тут просто нет, которые в состоянии решить данную проблему. Будем искать в других местах.

 

Всех благ!

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

  • 0
Видать все заняты :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Видать все заняты ;)

похоже :D

 

начал копать сам и... первые результаты в файле \lofiversion\index.php :

<?php
/**
* Prints a useful page with debug information on IPB SDK and the things behind the scene.
*
* This extension is loaded from within IPBSDK::sdk_info() and can't be used by itself.
*
* @author Cow <khlo@global-centre.com>
* @author Pita <peter@randomnity.com>
* @see IPBSDK::sdk_info()

*/

if (!$this) return 'Homer bad -- IPB SDK good!';

$info = '';
// removed spaces in <style>, added a, width to .c1 and .c2, .ct, .lt
$info .= '<html><head><title>IPB SDK Information Page</title><style type="text/css">body{font-family:Verdana,Arial,Helvetica,Sans-Serif;font-size:10pt;} h1{font-size:18pt;text-align:center;} h2{font-size:14pt;text-align:center;font-weight:normal;} table{width:100%;} th{font-size:10pt;background-color:#AABFDC;padding:5px;} a {color:#3A4F6C;} .c1{width:25%;text-align:left;background-color:#D1DCEB;vertical-align:middle;font-family:Verdana;font-size:10pt;padding:5px;font-weight:bold;color:#3A4F6C;} .c2{width:75%;background-color:#EEF2F7;font-family:Verdana;font-size:10pt;padding:5px;} .ct{text-align:center} .lt{text-align:left}</style></head><body><h1>IPB SDK Information Page</h1>';

$mysqlinfo = array();
$this->DB->query ('SHOW VARIABLES;');
while ($row = $this->DB->fetch_row()) {
$mysqlinfo[$row['Variable_name']] = $row['Value'];
}
// anonymous functions to do the HTML ... this is 'hardcore PHP';-)
$tbl_op = create_function('$sect,$c1="Name",$c2="Value"', 'static $cnt;$cnt++;return "<h2 id=\"sdkinfo_{$cnt}\">$sect</h2><table cellspacing=\"1\"><tr><th>$c1</th><th>$c2</th></tr>";');
$tbl_tr = create_function('$lbl,$val', 'return "<tr><td class=\"c1\">$lbl</td><td class=\"c2\">$val</td></tr>";');
$tbl_cl = create_function('$t=TRUE', 'return (!$t)?"</table>":"<tr><td colspan=\"2\" class=\"c1 ct\"><a href=\"#top\">[ top ]</a></td></tr></table>";');
// the headlines of all sections. reduce repetitions by using this array
$sections = array('IPB SDK Configuration', 'Cookies', '$ipsclass->input', 'Current Member Details', 'Invision Power Board Configuration', 'mySQL System Variables', 'Debug Information', 'IPB SDK Credits',);
// General IPB SDK Information
$info .= '<a name="top"></a><table cellspacing="1"><tr><th class="c1">IPB SDK Information Page</th></tr><tr><th class="c2 lt">';
// loop thru $sections to build the TOC
for($x = 0, $y = count($sections); $x < $y; $x++) {
$info .= ' · <a href="#sdkinfo_' . ($x + 1) . '">' . $sections[$x] . '</a><br />';
}
// updated (c) years;)
$info .= '<br />© 2003-2004 IPB SDK Development Team</td></tr>';
$info .= $tbl_cl(false);
// IPB SDK Config
$info .= $tbl_op(array_shift($sections));
// I think this better fits here
$info .= $tbl_tr('IPB SDK Version', $this->ipbsdk_version) . $tbl_tr('IPB Version', $this->ips->version) . $tbl_tr('PHP Version', phpversion()) . $tbl_tr('Zend Engine Version', zend_version()) . $tbl_tr('mySQL Version', $mysqlinfo['version']) . $tbl_tr('Database Queries Used', $this->DB->query_count);

foreach ($this->ipbsdk_settings as $x => $y) {
$info .= $tbl_tr($x, $y);
}
$info .= $tbl_cl();
// $_COOKIE
$info .= $tbl_op(array_shift($sections));
foreach ($_COOKIE as $x => $y) {
if (strstr($x, 'sql_') !== false) continue;
// deserialize arrays for better reading
if (version_compare(phpversion(), '4.3.0', '>=') && ($i = @unserialize($y))) eval('$y=print_r($i, 1);');
$info .= $tbl_tr($x, $y);
}
$info .= $tbl_cl();
// $ibforums->input
$info .= $tbl_op(array_shift($sections));
foreach ($this->ips->input as $x => $y) {
$info .= $tbl_tr($x, $y);
}
$info .= $tbl_cl();
// $GLOBALS['ibforums']->member
$info .= $tbl_op(array_shift($sections));
foreach ($this->ips->member as $x => $y) {
$info .= $tbl_tr($x, $y);
}
$info .= $tbl_cl();
// IPB Config
$info .= $tbl_op(array_shift($sections));
foreach ($this->ips->vars as $x => $y) {
if (strstr($x, 'sql_') === false) $info .= $tbl_tr($x, $y);
}
$info .= $tbl_cl();
// mySQL Details
$info .= $tbl_op(array_shift($sections));
foreach ($mysqlinfo as $x => $y) {
if (strstr($x, 'sql_') === false) $info .= $tbl_tr($x, $y);
}
$info .= $tbl_cl();
// Other Debug Information
$dbqueries = '';
$errors = '';
foreach ($this->DB->obj['cached_queries'] as $x) {
$dbqueries .= $x . '<br />';
}
foreach ($this->_errors as $x => $y) {
$errors .= '<strong>' . $x . '</strong> ' . $y . '<br />';
}
$info .= $tbl_op(array_shift($sections));
$info .= $tbl_tr('SDK Errors', count($this->_errors)) . $tbl_tr('Last SDK Error', $this->_lasterror) . $tbl_tr('Errors Generated', $errors) . $tbl_tr('Database Queries Count', $this->DB->query_count) . $tbl_tr('SQL Queries Run', $dbqueries);
$info .= $tbl_cl();
// Credits
// just an idea - link to the online function reference as a goodie;
// I dunno the URL syntax, so you need to fix this for Ripper and CTiga
$hp = 'http://ipbsdk.sourceforge.net/';
$credits = array('Cow' => 'Project Founder',
'Pita' => 'Conversion to 1.5, Project Leader',
'CirTap' => 'OOP Version of IPB SDK',
'Scyth' => 'Various contributions',
'MrTweakin' => 'Helping sort out the SourceForge Site',
'Ripper' => 'Contribution to <a href="' . $hp . '/functions/get_skin_info">get_skin_info()</a> function',
'CTiga' => '<a href="' . $hp . '/functions/get_groupinfo">get_groupinfo()</a> function',
'Bug Testers and Users' => 'Thanks for using the script :) Special mentions go to everyone on the Invisionize Forums for their huge support, suggestions and feedback.',
);

$info .= $tbl_op(array_shift($sections), 'Name', 'Project Involvement');
foreach ($credits as $x => $y) {
$info .= $tbl_tr($x, $y);
}
// homepage link <g>
$info .= $tbl_cl() . '<p style="text-align:center;margin-top:2em;color:#3A4F6C;"><a href="' . $hp . '">IPB SDK Homepage</a></p>';
$info .= '</body></html>';

echo $info;

return 'Homer bad -- IPB SDK good!';

 

 

Что делает сей скрипт? оригинального кода почти нет, но лофи версия работает

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

  • 0

Видать работает не через этот скрипт, сравните УРЛы. А этот скрипт, как и написано, относиться к странице дебага для IPB SDK. Не знаю, используете ли вы его, но страницу это лучше бы скрыть или удалить. В любом случае, она не должна никак влиять на загруженность форума :D

 

Я бы попросил хостера дать лог "плохих" запросов в MySQL, имхо это основная проблема, которая может завалить хостинг, если он нормальный. И разбираться с конкретными запросами.

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

  • 0

Sannis, лог "плохих" запросов в MySQL у хостера запросил, жду ответа от них.

Вот их предыдущее письмо о превышении, что сие означает я не совсем понимаю, но нагрузка я так понял не на sql, а на http сервер apache:

Ваш аккаунт превышает допустимую нагрузку на сервер в несколько раз.

Основную нагрузку создают запросы к вебсерверу apache домена *.ru

 

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

20218 apache 16 0 158m 121m 4484 R 44.5 3.0 0:00.79 httpd: b [*.ru] /forum/index.php

20230 apache 15 0 158m 120m 4364 R 46.7 3.0 0:00.33 httpd: b [*.ru] /forum/index.php

19657 apache 15 0 162m 126m 5396 R 64.8 3.1 0:04.88 httpd: b [*.ru] /forum/index.php

19657 apache 16 0 163m 127m 5400 R 83.4 3.2 0:04.97 httpd: b [*.ru] /forum/index.php

19647 apache 16 0 161m 126m 5660 R 27.8 3.1 0:04.23 httpd: b [*.ru] /forum/index.php

19646 apache 16 0 159m 123m 5172 R 56.1 3.0 0:03.71 httpd: b [*.ru] /forum/index.php

20133 apache 16 0 161m 125m 5072 R 18.7 3.1 0:01.54 httpd: b [www.*.ru] /index.php

20133 apache 16 0 161m 125m 5080 R 46.7 3.1 0:01.59 httpd: b [www.*.ru] /index.php

19654 apache 16 0 161m 125m 5428 R 56.1 3.1 0:03.98 httpd: b [*.ru] /forum/index.php

20133 apache 16 0 161m 125m 5084 R 28.0 3.1 0:01.68 httpd: b [www.*.ru] /index.php

20133 apache 16 0 161m 125m 5084 R 56.1 3.1 0:01.74 httpd: b [www.*.ru] /index.php

19647 apache 15 0 161m 126m 5660 R 18.7 3.1 0:04.45 httpd: b [*.ru] /forum/index.php

19647 apache 16 0 161m 126m 5664 R 37.4 3.1 0:04.51 httpd: b [*.ru] /forum/index.php

19665 apache 15 0 165m 128m 5048 R 18.2 3.2 0:04.75 httpd: b [*.ru] /forum/index.php

19665 apache 16 0 165m 128m 5048 R 55.6 3.2 0:04.81 httpd: b [*.ru] /forum/index.php

19657 apache 15 0 162m 126m 5416 R 46.3 3.1 0:05.29 httpd: b [*.ru] /forum/index.php

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

  • 0

только что пришло одно письмо:

Нагрузку создаёт не база данных. Нагрузку на CPU создают сами скрипты, и нагрузка по-прежнему велика:

 

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

15095 apache 15 0 180m 129m 5888 R 55.4 3.2 0:14.39 httpd: b [*.ru] /forum/index.php

15084 apache 16 0 178m 126m 5460 R 45.9 3.1 0:14.75 httpd: b [*.ru] /forum/index.php

15084 apache 16 0 178m 126m 5460 D 18.5 3.1 0:14.77 httpd: b [*.ru] /forum/index.php

16014 apache 15 0 178m 126m 5028 R 18.5 3.1 0:03.53 httpd: b [*.ru] /forum/index.php

16014 apache 16 0 178m 126m 5028 R 55.6 3.1 0:03.59 httpd: b [*.ru] /forum/index.php

15095 apache 16 0 180m 129m 5888 R 37.0 3.2 0:14.44 httpd: b [*.ru] /forum/index.php

15095 apache 16 0 180m 129m 5888 R 84.1 3.2 0:14.53 httpd: b [*.ru] /forum/index.php

15077 apache 15 0 178m 127m 5592 R 18.5 3.1 0:12.17 httpd: b [*.ru] /forum/index.php

 

Просим принять меры до конца рабочего дня.

 

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

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

  • 0
ты бэк весь востанавливал или только фаилы что пострадали?

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

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

  • 0
стоило полностью восстановить и скопировать взломаную версию на комп, а потом уже анализировать, и сравнивать даты последнего изменения фаилов, в любом случие я бы оперался на даты и логи, а может и вообще дыра в сайте была а страдает форум, у меня примерно так и было, искал в нем дыру а нашел в сайте))
Ссылка на комментарий
Поделиться на других сайтах

  • 0
стоило полностью восстановить и скопировать взломаную версию на комп, а потом уже анализировать, и сравнивать даты последнего изменения фаилов, в любом случие я бы оперался на даты и логи, а может и вообще дыра в сайте была а страдает форум, у меня примерно так и было, искал в нем дыру а нашел в сайте))

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

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

  • 0
Я бы обновил форум целиком и проверил нагрузку на нём. Также можно в robots.txt(см. яндекс или гуг) ограничить частоту просмотра форума поисковиками, обычно перегрузки создают они. Либо брать сервер мощнее, ибо сильно сократить прожорливость отключением базового функционала не получится.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Я бы обновил форум целиком и проверил нагрузку на нём. Также можно в robots.txt(см. яндекс или гуг) ограничить частоту просмотра форума поисковиками, обычно перегрузки создают они. Либо брать сервер мощнее, ибо сильно сократить прожорливость отключением базового функционала не получится.

Форум посещением 1000 посетителей в день разве может создавать подобную нагрузку?

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

  • 0
Может, если на самом обычном шареде, особенно если в данный момент поисковики его индексируют(вы же не учитываете их в этой тысяче, ведь так?). Что за хостер/тариф у вас? :D В какое время зафиксированы перегрузки? Посмотрите по логам посещения поисковиков в АЦ, не связано ли это с ними.
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Хостинг http://mchost.ru/hosting/ тариф "Корпоративный", проблема уж явно не в ПС, причем загрузка не в прямой зависимости от кол-ва посетителей в один момент времени, я учитываю в т.ч., и поисковых ботов

вот статистика загрузки за сегодняшний день:

05.11.2008 21:20 105%

05.11.2008 21:10 141%

05.11.2008 21:00 в норме

05.11.2008 20:50 в норме

05.11.2008 20:40 106%

05.11.2008 20:30 в норме

05.11.2008 20:20 111%

05.11.2008 20:10 183%

05.11.2008 20:00 142%

05.11.2008 19:50 135%

05.11.2008 19:40 208%

05.11.2008 19:30 262%

05.11.2008 19:20 134%

05.11.2008 19:10 в норме

05.11.2008 19:00 в норме

05.11.2008 18:50 194%

05.11.2008 18:40 135%

05.11.2008 18:30 126%

05.11.2008 18:20 138%

05.11.2008 18:10 529%

05.11.2008 18:00 222%

05.11.2008 17:50 220%

05.11.2008 17:40 246%

05.11.2008 17:30 191%

05.11.2008 17:20 204%

05.11.2008 17:10 232%

05.11.2008 17:00 229%

05.11.2008 16:50 299%

05.11.2008 16:40 369%

05.11.2008 16:30 265%

05.11.2008 16:20 300%

05.11.2008 16:10 188%

05.11.2008 16:00 259%

05.11.2008 15:50 233%

05.11.2008 15:40 186%

05.11.2008 15:30 236%

05.11.2008 15:20 306%

05.11.2008 15:10 303%

05.11.2008 15:00 228%

05.11.2008 14:50 225%

05.11.2008 14:40 283%

05.11.2008 14:30 226%

05.11.2008 14:20 227%

05.11.2008 14:10 257%

05.11.2008 14:00 251%

05.11.2008 13:50 251%

05.11.2008 13:40 214%

05.11.2008 13:30 203%

05.11.2008 13:20 171%

05.11.2008 13:10 110%

05.11.2008 13:00 155%

05.11.2008 12:50 в норме

05.11.2008 12:40 в норме

05.11.2008 12:30 108%

05.11.2008 12:20 170%

05.11.2008 12:10 190%

05.11.2008 12:00 161%

05.11.2008 11:50 164%

05.11.2008 11:40 161%

05.11.2008 11:30 133%

05.11.2008 11:20 183%

05.11.2008 11:10 119%

05.11.2008 11:00 113%

05.11.2008 10:50 123%

05.11.2008 10:40 125%

05.11.2008 10:30 228%

05.11.2008 10:20 276%

05.11.2008 10:10 218%

05.11.2008 10:00 243%

05.11.2008 09:50 134%

05.11.2008 09:40 157%

05.11.2008 09:30 141%

05.11.2008 09:20 142%

05.11.2008 09:10 в норме

05.11.2008 09:00 113%

05.11.2008 08:50 142%

05.11.2008 08:40 в норме

05.11.2008 08:30 в норме

05.11.2008 08:20 в норме

05.11.2008 08:10 в норме

05.11.2008 08:00 в норме

05.11.2008 07:50 в норме

05.11.2008 07:40 в норме

05.11.2008 07:30 в норме

05.11.2008 07:20 в норме

05.11.2008 07:10 в норме

05.11.2008 07:00 в норме

05.11.2008 06:50 в норме

05.11.2008 06:40 100%

05.11.2008 06:30 в норме

05.11.2008 06:20 в норме

05.11.2008 06:10 133%

05.11.2008 06:00 в норме

05.11.2008 05:50 в норме

05.11.2008 05:40 в норме

05.11.2008 05:30 в норме

05.11.2008 05:20 в норме

05.11.2008 05:10 в норме

05.11.2008 05:00 в норме

05.11.2008 04:50 в норме

05.11.2008 04:40 в норме

05.11.2008 04:30 в норме

05.11.2008 04:20 в норме

05.11.2008 04:10 в норме

05.11.2008 04:00 в норме

05.11.2008 03:50 в норме

05.11.2008 03:40 в норме

05.11.2008 03:30 240%

05.11.2008 03:20 214%

05.11.2008 03:10 249%

05.11.2008 03:00 251%

05.11.2008 02:50 258%

05.11.2008 02:40 230%

05.11.2008 02:30 245%

05.11.2008 02:20 230%

05.11.2008 02:10 243%

05.11.2008 02:00 259%

05.11.2008 01:50 294%

05.11.2008 01:40 206%

05.11.2008 01:30 209%

05.11.2008 01:20 214%

05.11.2008 01:10 225%

05.11.2008 01:00 202%

05.11.2008 00:50 234%

05.11.2008 00:40 261%

05.11.2008 00:30 266%

05.11.2008 00:20 250%

05.11.2008 00:10 250%

05.11.2008 00:00 333%

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

  • 0
В три раза нагрузку сбить не удастся простой оптимизацией. Если вы уверены в том, что не влияют, то остаётся только считать, что нагрузку создают каике-то вредоносный скрипты, которые всё ещё вызываются форумом. Так что для собственного успокоения можно переустановить. И спросить на форуме mchost, есть ли у кого на такой же площадке форум с вашей посещаемостью :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0
В три раза нагрузку сбить не удастся простой оптимизацией.

Сбивать то не в три раза придется .... ибо:

Допустимая нагрузка на сервер (не более) - 5%
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Я брал по минимуму :D

Ваш хостинг просто не рассчитал на то количество одновременных посещений, которые у вас бывают, вот и всё... Либо хостер хочет переманить вас на более дорогой тариф.

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

  • 0
Не сочтите за рекламу, но мои многие проекты лежат на ru-web.net .... и честно говоря в этом топике я вообще впервые услышал что бывают какие то ограничение на нагрузку сервера =()
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

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

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