Skocz do zawartości
koliber2

Problem z serwerem

Polecane posty

Witam!

 

Prowadzę grę internetową przez przeglądarkę i posiadam serwer dedykowany tylko i wyłącznie pod tą grę.

 

Serwer to: Kimsufi Q-1T

Quad Core Q6600

4x 2.40+ GHz

4 GB

 

Głównym winowajcą jest MySQL, który tworzy slow queries w losowym czasie i w różnych zapytaniach... Serwer w tym momencie staje i tworzy się ogromny lag... Problemy się zaczęły, gdy gra została przeniesiona na inny serwer. Wczesniej gra działała bez zarzutu na slabszej maszynie (3,0Ghz HT).

 

 

Konfiguracja

 

TOP

top - 20:36:56 up 28 days,  5:47,  1 user,  load average: 4.22, 7.99, 16.72
Tasks: 213 total,   2 running, 211 sleeping,   0 stopped,   0 zombie
Cpu(s):  5.6%us,  1.6%sy,  0.0%ni, 23.9%id, 68.7%wa,  0.0%hi,  0.2%si,  0.0%st
Mem:   4128152k total,  3014632k used,  1113520k free,   554180k buffers
Swap:  4607992k total,        0k used,  4607992k free,  1978232k cached

 

APACHE

Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 3
MinSpareServers 5
MaxSpareServers 25
StartServers 5
MaxClients 256
MaxRequestsPerChild 200

PHP
[code]
extension="/no-debug-non-zts-20020429/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

 

MYSQL


[mysqld]
max_connections=200
connect_timeout=5
log-slow-queries=/var/log/mysql/log-slow-queries.log
#log-bin
key_buffer_size = 500M
max_allowed_packet = 1M
sort_buffer_size=2M
read_rnd_buffer_size=8M
read_buffer_size=2M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
thread_concurrency = 4
query_cache_limit=1M
query_cache_size=32M
query_cache_type=1
table_cache = 200
skip-innodb
skip-networking

 

Prosze o pomoc lub o jakieś sugestie. Gdyby znalazl sie ktos kto by problem rozwiazal- niewykluczona zaplata...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość N3T5kY

do my cnf dodaj

tmp_table = 128M
(lub wiecej)

 

zmniejsz timeout apache do 10 i zainteresuj sie jakims anty-slowloris

 

 

Masz tez duzy iowait, czyli procesor bardzo dlugo czeka na I/O dysku

 

sprawdz:

smartctl -a /dev/sda

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A ja bym polecał zainteresować się jakimś cache (apc, memcache), aby odciążyć bazę.

 

A ja bym polecił Tobie kupić okulary.

W pierwszym poście jest wyraźnie wycinek z php.ini, gdzie widać, że dodany jest eaccelerator.

 

 

A co do tematu.

Zobacz sobie w phpinfo, ile Ci eaccelerator w danej chwili pobiera :

eaccelerator.shm_size

 

I w sumie możesz się pokusić o zwiększenie wartości.

 

Myślę, że przesadziłeś z key_buffer_size = 500M, polecam więc w łopatologiczny sposób odpalić np. tuning-primer i zasugerować się zmianami przez niego sugerowanymi ;D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A ja bym polecił Tobie kupić okulary.

W pierwszym poście jest wyraźnie wycinek z php.ini, gdzie widać, że dodany jest eaccelerator.

Ja mam kupić okulary? :)

apc oraz memcache pozwalają na zapis DANYCH do cache (np wyników zapytań, tyle, że robisz to sam w kodzie). Natomiast eaccelerator nie pozwala na takie rzeczy.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

heh i jesteś tego pewien? :)

Tutaj mały kodzik cachera do WP (eAccelerator)

<?php

/*
Name: eAccelerator for WordPress
Description: eAccelerator backend for the WP Object Cache.
Version: 0.6
URI: [url="http://neosmart.net/dl.php?id=13"]http://neosmart.net/dl.php?id=13[/url]
Author: Computer Guru
Author URI: [url="http://neosmart.net/blog/"]http://neosmart.net/blog/[/url]

* Install this file to /wp-content/object-cache.php
* If on Windows, restart IIS after installing for best results

Thanks to Ryan Boren for his original memcached code.

*/

// Gracefully revert to default cache if eAccelerator is not installed
if ( !function_exists('eaccelerator_get') )
include_once(ABSPATH . WPINC . '/cache.php');
else
{

function wp_cache_add($key, $data, $flag = '', $expire = 0)
{
return wp_cache_set($key, $data, $flag, $expire);
}

function wp_cache_close()
{
return true;
}

function wp_cache_delete($id, $flag = '')
{
global $wp_object_cache;

return $wp_object_cache->delete($id, $flag);
}

function wp_cache_flush()
{
global $wp_object_cache;

return $wp_object_cache->flush();
}

function wp_cache_get($id, $flag = '')
{
global $wp_object_cache;

return $wp_object_cache->get($id, $flag);
}

function wp_cache_init()
{
global $wp_object_cache;

$wp_object_cache = new WP_Object_Cache();
}

function wp_cache_replace($key, $data, $flag = '', $expire = 0)
{
return wp_cache_set($key, $data, $flag, $expire);
}

function wp_cache_set($key, $data, $flag = '', $expire = 0)
{
global $wp_object_cache;

return $wp_object_cache->set($key, $data, $flag, $expire);
}

class WP_Object_Cache {
var $global_groups = array ('users', 'userlogins', 'usermeta');
var $cache = array();

function delete($id, $group = 'default')
{
	$key = $this->key($id, $group);
	$result = eaccelerator_rm($key);
	if ( $result )
			unset($this->cache[$key]);
	return $result;
}

function flush()
{
	eaccelerator_clear();
	return true;
}

function get($id, $group = 'default')
{
	$key = $this->key($id, $group);

	if ( isset($this->cache[$key]) )
		$value = $this->cache[$key];
	else
		$value = eaccelerator_get($key);

	$value = maybe_unserialize($value);

	if ( NULL === $value )
		$value = false;

	$this->cache[$key] = $value;

	return $value;
}

function set($id, $data, $group = 'default', $expire = 0)
{
	$key = $this->key($id, $group);
	if ( is_resource($data) )
		return false;

	$data = maybe_serialize($data);

	$result = eaccelerator_put($key, $data, $expire);
	if ( $result )
		$this->cache[$key] = $data;

	return $result;
}

function key($key, $group)
{
	global $blog_id;

	if ( empty($group) )
		$group = 'default';

	if (false !== array_search($group, $this->global_groups))
		$prefix = '';
	else
		$prefix = $blog_id . ':';

	return md5(ABSPATH . "$prefix$group:$key");
}

function stats()
{
	// Note that this is the total eAccelerator stats, not just WP but also any other apps using eAccelerator var storage
	$eaccelerator_info = eaccelerator_info();
	echo "<p>\n";
	echo "<strong>Cached Variables:</strong> {$eaccelerator_info['cachedKeys']}<br/>\n";
	echo "<strong>Cached Scripts:  </strong> {$eaccelerator_info['cachedScripts']}<br/>\n";
	echo "</p>\n";

	if ( !empty($this->cache) )
	{
		echo "<pre>\n\r";
		print_r($this->cache);
		echo "</pre>\n\r";
	}
}

function WP_Object_Cache()
{
	// Empty Constructor
}
}
} //End Else
?>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W mysql wartość tmp_table_size zmianiłem na "256M". W Apache timeout zmieniony na 10 smartctl -a /dev/sda nie działa... podczas wlaczania /etc/init.d/smartmontools start otrzymuje następujący komunikat

Enabling S.M.A.R.T..../dev/sda...unable to fetch IEC (SMART) mode page [unsupported field in scsi command] (failed)...

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Sprawa nadal nierozwiązana... serwer łapie zawiasy w pewnych momentach blokując dostęp do serwera...

 

Przeinstalowałem system na OpenSUSE 11 i nadal to samo. Dyski sprawdziłem za pomocą narzędzia OVH i wszystko jest OK. Podczas zawiasu %wa sięga, aż do 100%.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość N3T5kY

Jeśli jest IOwait 100, to musi być coś z dyskiem/procesorem, bo to nie jest normalne.

 

Sprawdziłeś smarta, tak jak prosiłem :(?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Już wstawiam... :P

 

smartctl -a /dev/sda

smartctl -a /dev/sda
smartctl 5.39 2008-05-08 21:56 [i686-pc-linux-gnu] (local build)
Copyright (C) 2002-8 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model: 	WDC WD10EADS-00P8B0
Serial Number:	WD-WMAVU0298398
Firmware Version: 01.00A01
User Capacity:	1,000,204,886,016 bytes
Device is: 	Not in smartctl database [for details use: -P showall]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is:	Thu Dec 31 15:29:00 2009 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status: (0x84) Offline data collection activity
	was suspended by an interrupting command 	from host.
	Auto Offline Data Collection: Enabled.
Self-test execution status: 	( 0) The previous self-test routine completed
	without error or no self-test has ever
	been run.
Total time to complete Offline
data collection: 	(21780) seconds.
Offline data collection
capabilities: 	(0x7b) SMART execute Offline immediate.
	Auto Offline data collection on/off supp 	ort.
	Suspend Offline collection upon new
	command.
	Offline surface scan supported.
	Self-test supported.
	Conveyance Self-test supported.
	Selective Self-test supported.
SMART capabilities: 	(0x0003) Saves SMART data before entering
	power-saving mode.
	Supports SMART auto save timer.
Error logging capability: 	(0x01) Error logging supported.
	General Purpose Logging supported.
Short self-test routine
recommended polling time: 	( 2) minutes.
Extended self-test routine
recommended polling time: 	( 250) minutes.
Conveyance self-test routine
recommended polling time: 	( 5) minutes.
SCT capabilities: 	(0x303f) SCT Status supported.
	SCT Feature Control supported.
	SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME 	FLAG 	VALUE WORST THRESH TYPE 	UPDATED WHEN_ 	FAILED RAW_VALUE
1 Raw_Read_Error_Rate 	0x002f 200 200 051	Pre-fail Always 	- 	0
3 Spin_Up_Time 	0x0027 177 177 021	Pre-fail Always 	- 	6108
4 Start_Stop_Count 	0x0032 100 100 000	Old_age Always 	- 	21
5 Reallocated_Sector_Ct 0x0033 200 200 140	Pre-fail Always 	- 	0
7 Seek_Error_Rate 	0x002e 100 253 000	Old_age Always 	- 	0
9 Power_On_Hours 	0x0032 098 098 000	Old_age Always 	- 	1612
10 Spin_Retry_Count 	0x0032 100 253 000	Old_age Always 	- 	0
11 Calibration_Retry_Count 0x0032 100 253 000	Old_age Always 	- 	0
12 Power_Cycle_Count 	0x0032 100 100 000	Old_age Always 	- 	19
192 Power-Off_Retract_Count 0x0032 200 200 000	Old_age Always 	- 	17
193 Load_Cycle_Count 	0x0032 187 187 000	Old_age Always 	- 	40897
194 Temperature_Celsius 	0x0022 124 101 000	Old_age Always 	- 	26
196 Reallocated_Event_Count 0x0032 200 200 000	Old_age Always 	- 	0
197 Current_Pending_Sector 0x0032 200 200 000	Old_age Always 	- 	0
198 Offline_Uncorrectable 0x0030 200 200 000	Old_age Offline 	- 	0
199 UDMA_CRC_Error_Count	0x0032 200 200 000	Old_age Always 	- 	0
200 Multi_Zone_Error_Rate 0x0008 200 200 000	Old_age Offline 	- 	0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged. [To run self-tests, use: smartctl -t]


SMART Selective self-test log data structure revision number 1
SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS
1 	0 	0 Not_testing
2 	0 	0 Not_testing
3 	0 	0 Not_testing
4 	0 	0 Not_testing
5 	0 	0 Not_testing
Selective self-test flags (0x0):
After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×