Оптимизация сайта с большой базой на виртуальном хостинге

Статус
В этой теме нельзя размещать новые ответы.
  • Заблокирован
  • #2
для начала уберите с сайта поиск... включите кеширование на сайте.
попросите хостера что б предоставил логи долгих запросов... хотя готов поспорить кеширование решит проблему
 
вот моя конфигурация:

Для просмотра ссылки Войди или Зарегистрируйся

как видно кеш включен... или ещё где включить?
 
  • Заблокирован
  • #4
хм странно, а тогда вы бы не могли в index.php в предпоследней строчке
вот это
GzipOut ();
заменить на вот это
GzipOut (1);
это режим отладки в исходном коде будет показано сколько времени ушло на запросы в бд на генерацию странички и колличество запросов. Это поможет посмотреть проблемные места
 
gzip сжатие я поставил после первого сообщения, сори)
...и вот что написал мне хостер на вопрос нагрузки:

очень много запросов вида:



Связанно ли это с gzip? может нафих отключить его, вобще зачем он?



Добавлено через 42 минуты
И ещё, как я и говорил у меня проблемы с удалением новостей, вот к примеру что пхпмайадмин пишет при удалении:

Удалено строк: 254. ( запрос занял 70.6683 сек. )
DELETE FROM dle_post WHERE autor = 'geer13'

70 секунд!!!! - да это ужас!
 
  • Заблокирован
  • #6
то что я вас попросил сделать это не гзип, это что то типа режима отладки в исходном кодебудет выводится вот такая вот статистика

<!-- Время выполнения скрипта 0.03558 секунд -->
<!-- Время затраченное на компиляцию шаблонов 0.00361 секунд -->
<!-- Время затраченное на выполнение MySQL запросов: 0.00828 секунд-->
<!-- Общее количество MySQL запросов 6 -->

что поможет определить проблемные страницы. так что именно в исходном коде index.php поставьте 1

а то что у вас в phpmyadmine удаление заняло столько времени то это в принципе нормально на таблице с такими объемами при условии что выборка идет по полю варчар.



вот эти запросы


создает блок случайные 10 новостей... так что подумайте нужен ли он?
 
как мне выйти в режим отладки? это какой-то отдельный скрипт или в самом дле такое есть?
 
  • Заблокирован
  • #8
зайдите на свой сайт по фтп, откройте index.php для редактирования

увидите что то такое

PHP:
<?php
/*
=====================================================
 DataLife Engine Nulled by M.I.D-Team
-----------------------------------------------------
 http://www.mid-team.ws/
-----------------------------------------------------
 Copyright (c) 2004,2009 SoftNews Media Group
=====================================================
 Данный код защищен авторскими правами
=====================================================
 Файл: index.php
-----------------------------------------------------
 Назначение: Главная страница
=====================================================
*/
@session_start ();
@ob_start ();
@ob_implicit_flush ( 0 );

@error_reporting ( E_ALL ^ E_NOTICE );
@ini_set ( 'display_errors', true );
@ini_set ( 'html_errors', false );
@ini_set ( 'error_reporting', E_ALL ^ E_NOTICE );

define ( 'DATALIFEENGINE', true );

$member_id = FALSE;
$is_logged = FALSE;

define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );

require_once ROOT_DIR . '/engine/init.php';

if (clean_url ( $_SERVER['HTTP_HOST'] ) != clean_url ( $config['http_home_url'] )) {
	
	$replace_url = array ();
	$replace_url[0] = clean_url ( $config['http_home_url'] );
	$replace_url[1] = clean_url ( $_SERVER['HTTP_HOST'] );

} else
	$replace_url = false;

$tpl->load_template ( 'main.tpl' );

$tpl->set ( '{calendar}', $tpl->result['calendar'] );
$tpl->set ( '{archives}', $tpl->result['archive'] );
$tpl->set ( '{tags}', $tpl->result['tags_cloud'] );
$tpl->set ( '{vote}', $tpl->result['vote'] );
$tpl->set ( '{topnews}', $topnews );
$tpl->set ( '{login}', $login_panel );
$tpl->set ( '{info}', "<span id='dle-info'>" . $tpl->result['info'] . "</span>" );
$tpl->set ( '{speedbar}', $tpl->result['speedbar'] );

if ($config['allow_skin_change'] == "yes") $tpl->set ( '{changeskin}', ChangeSkin ( ROOT_DIR . '/templates', $config['skin'] ) );

if (count ( $banners ) and $config['allow_banner']) {
	
	foreach ( $banners as $name => $value ) {
		$tpl->copy_template = str_replace ( "{banner_" . $name . "}", $value, $tpl->copy_template );
	}

}

$tpl->set_block ( "'{banner_(.*?)}'si", "" );

if (count ( $informers ) and $config['rss_informer']) {
	foreach ( $informers as $name => $value ) {
		$tpl->copy_template = str_replace ( "{inform_" . $name . "}", $value, $tpl->copy_template );
	}
}

if ($do == "" and ! $subaction and $year) $do = "date";
elseif ($do == "" and $catalog) $do = "catalog";
elseif ($do == "") $do = $subaction;

if ($allow_active_news and $config['allow_change_sort'] and ! $config['ajax']) {
	
	$tpl->set ( '[sort]', "" );
	$tpl->set ( '{sort}', news_sort ( $do ) );
	$tpl->set ( '[/sort]', "" );

} else {
	
	$tpl->set_block ( "'\\[sort\\](.*?)\\[/sort\\]'si", "" );

}

if (strpos ( $tpl->copy_template, "[aviable=" ) !== false) {
	$tpl->copy_template = preg_replace ( "#\\[aviable=(.+?)\\](.*?)\\[/aviable\\]#ies", "check_module('\\1', '\\2', '{$do}')", $tpl->copy_template );
}

if (strpos ( $tpl->copy_template, "[not-aviable=" ) !== false) {
	$tpl->copy_template = preg_replace ( "#\\[not-aviable=(.+?)\\](.*?)\\[/not-aviable\\]#ies", "check_module('\\1', '\\2', '{$do}', false)", $tpl->copy_template );
}

if (strpos ( $tpl->copy_template, "[not-group=" ) !== false) {
	$tpl->copy_template = preg_replace ( "#\\[not-group=(.+?)\\](.*?)\\[/not-group\\]#ies", "check_group('\\1', '\\2', false)", $tpl->copy_template );
}

if (strpos ( $tpl->copy_template, "[group=" ) !== false) {
	$tpl->copy_template = preg_replace ( "#\\[group=(.+?)\\](.*?)\\[/group\\]#ies", "check_group('\\1', '\\2')", $tpl->copy_template );
}

if (strpos ( $tpl->copy_template, "[category=" ) !== false) {
	$tpl->copy_template = preg_replace ( "#\\[category=(.+?)\\](.*?)\\[/category\\]#ies", "check_category('\\1', '\\2', '{$category_id}')", $tpl->copy_template );
}

if (strpos ( $tpl->copy_template, "[not-category=" ) !== false) {
	$tpl->copy_template = preg_replace ( "#\\[not-category=(.+?)\\](.*?)\\[/not-category\\]#ies", "check_category('\\1', '\\2', '{$category_id}', false)", $tpl->copy_template );
}

if (strpos ( $tpl->copy_template, "{custom" ) !== false) {
	$tpl->copy_template = preg_replace ( "#\\{custom category=['\"](.+?)['\"] template=['\"](.+?)['\"] aviable=['\"](.+?)['\"] from=['\"](.+?)['\"] limit=['\"](.+?)['\"] cache=['\"](.+?)['\"]\\}#ies", "custom_print('\\1', '\\2', '\\3', '\\4', '\\5', '\\6', '{$do}')", $tpl->copy_template );
}

$config['http_home_url'] = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) );
$config['http_home_url'] = reset ( $config['http_home_url'] );

if (! $user_group[$member_id['user_group']]['allow_admin']) $config['admin_path'] = "";

$ajax .= <<<HTML
<script language="javascript" type="text/javascript">
<!--
var dle_root       = '{$config['http_home_url']}';
var dle_admin      = '{$config['admin_path']}';
var dle_login_hash = '{$dle_login_hash}';
var dle_skin       = '{$config['skin']}';
var dle_wysiwyg    = '{$config['allow_comments_wysiwyg']}';
var quick_wysiwyg  = '{$config['allow_quick_wysiwyg']}';
var menu_short     = '{$lang['menu_short']}';
var menu_full      = '{$lang['menu_full']}';
var menu_profile   = '{$lang['menu_profile']}';
var menu_fnews     = '{$lang['menu_fnews']}';
var menu_fcomments = '{$lang['menu_fcomments']}';
var menu_send      = '{$lang['menu_send']}';
var menu_uedit     = '{$lang['menu_uedit']}';
var dle_req_field  = '{$lang['comm_req_f']}';
var dle_del_agree  = '{$lang['news_delcom']}';
var dle_del_news   = '{$lang['news_delnews']}';\n
HTML;

if ($user_group[$member_id['user_group']]['allow_all_edit']) {
	
	$ajax .= <<<HTML
var allow_dle_delete_news   = true;\n
HTML;

} else {
	
	$ajax .= <<<HTML
var dle_login_hash = '';
var allow_dle_delete_news   = false;\n
HTML;

}

$ajax .= <<<HTML
//-->
</script>
<script type="text/javascript" src="{$config['http_home_url']}engine/ajax/menu.js"></script>
<script type="text/javascript" src="{$config['http_home_url']}engine/ajax/dle_ajax.js"></script>
<div id="loading-layer" style="display:none;font-family: Verdana;font-size: 11px;width:200px;height:50px;background:#FFF;padding:10px;text-align:center;border:1px solid #000"><div style="font-weight:bold" id="loading-layer-text">{$lang['ajax_info']}</div><br /><img src="{$config['http_home_url']}engine/ajax/loading.gif"  border="0" alt="" /></div>
<div id="busy_layer" style="visibility: hidden; display: block; position: absolute; left: 0px; top: 0px; width: 100%; height: 100%; background-color: gray; opacity: 0.1; -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=10)'; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=10); "></div>
<script type="text/javascript" src="{$config['http_home_url']}engine/ajax/js_edit.js"></script>
HTML;

if ($allow_comments_ajax AND ($config['allow_comments_wysiwyg'] == "yes" OR $config['allow_quick_wysiwyg'])) $ajax .= <<<HTML

<script type="text/javascript" src="{$config['http_home_url']}engine/editor/jscripts/tiny_mce/tiny_mce.js"></script>

HTML;

if (strpos ( $tpl->result['content'], "hs.expand" ) !== false or strpos ( $tpl->copy_template, "hs.expand" ) !== false or $config['ajax'] or $pm_alert != "") {
	
	if ($pm_alert != "") $hs_prefix = "-html";
	else $hs_prefix = "";
	
	$ajax .= <<<HTML

<script type="text/javascript" src="{$config['http_home_url']}engine/classes/highslide/highslide{$hs_prefix}.js"></script>
<script type="text/javascript">    
    hs.graphicsDir = '{$config['http_home_url']}engine/classes/highslide/graphics/';
    hs.outlineType = 'rounded-white';
    hs.numberOfImagesToPreload = 0;
    hs.showCredits = false;
	hs.lang = {
		loadingText :     '{$lang['loading']}',
		fullExpandTitle : '{$lang['thumb_expandtitle']}',
		restoreTitle :    '{$lang['thumb_restore']}',
		focusTitle :      '{$lang['thumb_focustitle']}',
		loadingTitle :    '{$lang['thumb_cancel']}'
	};
</script>
{$pm_alert}
HTML;

}

$tpl->set ( '{AJAX}', $ajax );
$tpl->set ( '{headers}', $metatags );

$tpl->set ( '{content}', "<div id='dle-content'>" . $tpl->result['content'] . "</div>" );
$tpl->set ( '{THEME}', $config['http_home_url'] . 'templates/' . $config['skin'] );

$tpl->compile ( 'main' );

if ($replace_url) $tpl->result['main'] = str_replace ( $replace_url[0], $replace_url[1], $tpl->result['main'] );

echo $tpl->result['main'];
$tpl->global_clear ();
$db->close ();

echo "\n<!-- DataLife Engine Copyright SoftNews Media Group (http://dle-news.ru) -->\r\n";

GzipOut ();
?>

Вам нужна почти последняя строчка!

вместо GzipOut ();
надо написать GzipOut (1);
и сохранить фаил.

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

Но вот случайные 10 фильмов я бы посоветовал отключить...
 
Отключи похожие новости. Хотя на самом деле 400 уников на таком сайте это вообще ниочем. Рискну предположить что причина такой большой нагрузки кроется в кривости настроек самого мускуля на хостинге. Ну либо там дается 25% мощности от процессора в 1ггц 32 битного, тогда тут не сделаеш вообще ничего.
 
  • Заблокирован
  • #10
Отключи похожие новости. Хотя на самом деле 400 уников на таком сайте это вообще ниочем. Рискну предположить что причина такой большой нагрузки кроется в кривости настроек самого мускуля на хостинге. Ну либо там дается 25% мощности от процессора в 1ггц 32 битного, тогда тут не сделаеш вообще ничего.


100 процентно из-за модуля 10 случайных новостей. Сотрим на первый скрин, очень большая нагрузка на процессор так, затем смотрим на те запросы которые предоставил хосетр, затем идем сюда

и читаем 6 пункт. затем отключаем этот ненужный модуль и наслождаемся отличной работой скрипта.

по своему опыту могу сказать что держу 3 дле с общей посещаемостью 10к уников в день, у каждой база по 4 -5 тысячи новостей и он-лайн сидит суммарно около 250 и все это висит на простом впс с 200 мегагерцами и 750 мб памяти. проблем не возникает...

так что в топку этот модуль... он все равно ничего хорошего не дает.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху