Linux за българи: Форуми

Linux секция за напреднали => Начини за увеличаване на бързодействието => Темата е започната от: Ali Nebi в May 20, 2008, 00:14



Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 00:14
Здравейте,

бих искал да ви помоля ако може да ми помогнете да оптимизирам възможно най-добре един сървър. На него е инсталиран CentOS 5 и на него имаме работещи apache 2 и mysql. Сайтът, който се хоства на него използва Innodb engine за таблиците в базата данни.

Проблемът е следният,

apache процесите използват повече процесор и load avarage от top скача нагоре. Необходимо ми е да оптимизирам системата да ползва по-малко процесор, защотот сайтът и системата стават бавни. Ето какво показва топ:

Примерен код

top - 23:11:41 up 11:24,  6 users,  load average: 2.04, 2.08, 2.06
Tasks: 130 total,   1 running, 129 sleeping,   0 stopped,   0 zombie
Cpu(s): 34.3%us,  6.8%sy,  0.0%ni, 52.1%id,  6.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4051316k total,  3745052k used,   306264k free,   151096k buffers
Swap:  6291448k total,    69640k used,  6221808k free,  1701868k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                
19301 mysql     15   0 2185m 531m 4424 S    2 13.4   0:42.53 mysqld                                                                                                                
 2174 root      19   0 1347m 440m 8960 S    0 11.1   5:32.76 java                                                                                                                  
19551 apache    15   0  435m 110m  41m S    0  2.8   0:30.54 httpd                                                                                                                  
19554 apache    15   0  411m  85m  41m S    0  2.2   0:37.34 httpd                                                                                                                  
19587 apache    15   0  412m  84m  40m S    0  2.1   0:42.91 httpd                                                                                                                  
19568 apache    16   0  409m  83m  41m D   82  2.1   0:29.80 httpd                                                                                                                  
19569 apache    15   0  408m  83m  41m S    0  2.1   0:49.39 httpd                                                                                                                  
19589 apache    15   0  409m  82m  40m S    0  2.1   0:17.50 httpd                                                                                                                  
19559 apache    15   0  409m  82m  40m S    0  2.1   0:34.86 httpd                                                                                                                  
19578 apache    15   0  409m  81m  40m S    0  2.1   0:34.18 httpd                                                                                                                  
19553 apache    15   0  407m  80m  40m S    0  2.0   0:08.89 httpd                                                                                                                  
19588 apache    15   0  406m  79m  40m S    0  2.0   0:13.91 httpd                                                                                                                  
19552 apache    15   0  405m  79m  40m S    0  2.0   0:27.38 httpd                                                                                                                  
19627 apache    15   0  403m  77m  41m S    0  2.0   0:09.87 httpd                                                                                                                  
19563 apache    15   0  404m  77m  41m S    0  2.0   0:34.15 httpd                                                                                                                  
19571 apache    15   0  399m  74m  42m S    0  1.9   0:11.61 httpd                                                                                                                  
19561 apache    15   0  398m  72m  42m S    0  1.8   0:45.43 httpd                                                                                                                  
19550 apache    15   0  398m  72m  40m S    0  1.8   0:13.68 httpd                                                                                                                  
19586 apache    15   0  399m  71m  40m S    0  1.8   0:30.43 httpd                                                                                                                  
19567 apache    15   0  399m  71m  40m S    0  1.8   0:31.72 httpd                                                                                                                  
19570 apache    15   0  396m  71m  41m S    0  1.8   0:16.42 httpd                                                                                                                  
19626 apache    15   0  396m  70m  40m S    0  1.8   0:18.85 httpd                                                                                                                  
 2474 mailman   18   0  186m  47m 3164 S    0  1.2   0:10.98 python                                                                                                                
 2472 mailman   18   0  184m  46m 3148 S    0  1.2   0:06.39 python                                                                                                                
 2477 mailman   15   0  183m  45m 3156 S    0  1.2   0:10.07 python                                                                                                                
 2476 mailman   15   0  180m  42m 3220 S    0  1.1   0:04.82 python                                                                                                                
18784 root      18   0  383m  26m 9008 S    0  0.7   0:00.54 httpd                                                                                                                  
19508 root      15   0 47980  16m 1832 S    0  0.4   0:01.47 awstats.pl                                                                                                            
 2475 mailman   18   0  147m 9860 3092 S    0  0.2   0:01.50 python                                                                                                                
 2473 mailman   18   0  147m 9824 3092 S    0  0.2   0:01.37 python                                    


Това е резултат от dstats

Примерен код

 76  21   1   0   0   0| 2.2  2.1  2.1|1847M  147M 1662M  300M|8087B   34k|  2   0   0|  68M 6076M|1055   805
 49   9  42   1   0   0| 2.1  2.1  2.1|1847M  147M 1662M  300M|5231B   41k|  2   0   0|  68M 6076M|1075  2139
----total-cpu-usage---- ---load-avg--- ------memory-usage----- -net/total- ---procs--- -swp/total- ---system--
usr sys idl wai hiq siq| 1m   5m  15m | used  buff  cach  free| recv  send|run blk new| used  free| int   csw
 22   6  72   1   0   0| 2.1  2.1  2.1|1847M  147M 1662M  300M|4303B   19k|  1   0   0|  68M 6076M|1074   953
  0   0 100   0   0   0| 2.1  2.1  2.1|1847M  147M 1662M  300M|2094B   19k|  1   0   0|  68M 6076M|1024   131
 33   9  55   3   0   0| 2.1  2.1  2.1|1848M  147M 1662M  299M|3208B   19k|  3   0   0|  68M 6076M|1062   863
 83  16   0   0   0   0| 2.1  2.1  2.1|1852M  147M 1662M  295M|4198B   20k|  8   0   0|  68M 6076M|1049  1320
 89  12   0   0   0   0| 2.3  2.1  2.1|1855M  147M 1662M  292M|3577B   21k|  6   0   0|  68M 6076M|1060  2542
 80  20   0   0   0   1| 2.3  2.1  2.1|1853M  147M 1662M  294M|4650B   53k|  3   0   0|  68M 6076M|1067  2618
 38  11  51   1   0   0| 2.3  2.1  2.1|1848M  147M 1662M  299M|9861B   76k|  4   0   0|  68M 6076M|1103   709
 82  17   2   0   0   0| 2.3  2.1  2.1|1852M  147M 1662M  295M|4569B   30k|  3   0   0|  68M 6076M|1085  1581
 57  14  29   0   0   0| 2.3  2.1  2.1|1853M  147M 1662M  294M|5086B   34k|  3   0   0|  68M 6076M|1061  2051
 60  11  29   1   0   0| 2.2  2.1  2.1|1846M  148M 1662M  301M|6029B   50k|  2   0   0|  68M 6076M|1173  1377
 50  12  37   0   0   0| 2.2  2.1  2.1|1846M  148M 1662M  301M|7440B   58k|  2   0   0|  68M 6076M|1067  1785
 12   3  84   1   0   0| 2.2  2.1  2.1|1847M  148M 1662M  299M|6211B   67k|  0   0   0|  68M 6076M|1092   463
 18   5  74   1   0   0| 2.2  2.1  2.1|1848M  148M 1662M  299M|5356B   27k|  0   0   0|  68M 6076M|1082   810
  0   1 100   0   0   0| 2.2  2.1  2.1|1847M  148M 1662M  299M|6042B   70k|  0   0   0|  68M 6076M|1085   227
  2   2  97   0   0   0|   2  2.1  2.1|1847M  148M 1662M  299M|6088B   53k|  2   0   0|  68M 6076M|1076   348
 39  10  49   2   0   0|   2  2.1  2.1|1848M  148M 1662M  299M|8597B   51k|  1   0   0|  68M 6076M|1082   742
 44   6  50   0   0   0|   2  2.1  2.1|1848M  148M 1662M  299M|7495B   68k|  1   0   0|  68M 6076M|1071  1449
 30   8  61   2   0   0|   2  2.1  2.1|1848M  148M 1662M  299M|4438B   42k|  0   2   0|  68M 6076M|1128  1226
 13   3  46  39   0   0|   2  2.1  2.1|1858M  148M 1662M  289M|8227B   37k|  1   0   0|  68M 6076M|1236   338


Имам следната конфигурация на apache:

Примерен код

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 100

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 2

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers      5
MinSpareServers   5
MaxSpareServers   20
ServerLimit      100
MaxClients       100
MaxRequestsPerChild 4000
</IfModule>


И това е за my.cnf

Примерен код
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=0
bind-address=127.0.0.1
max_connections=300
# Set MyISAM parameters
key_buffer_size=3M
tmp_table_size=16M
# Set InnoDB parameters
innodb_file_per_table
# Set buffer pool size to 50 - 80% of availiable memory.
innodb_buffer_pool_size=1500M
innodb_additional_mem_pool_size=50M
# Set the log file size to about 25% of the buffer pool size.
#innodb_log_file_size=5M
#innodb_log_buffer_size=1M
table_cache=1024
#sort_buffer_size=3M
query_cache_type=1
query_cache_limit=1M
query_cache_size=40M
net_read_timeout=120
#long_query_time=10
#log_warnings=2
#log_slow_queries=/var/log/mysql/slow-queries.log
collation_server=utf8_unicode_ci
character_set_server=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


Моля ви се да ми помогнете да разреша този проблем.

Ако имате нужда от още информация ще ви я дам.


Титла: Помощ за оптимизация на сървър
Публикувано от: VladSun в May 20, 2008, 00:40
Reverse proxy, caching?
http://www.apachetutor.org/admin/reverseproxies


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 01:24
Това ще реши от части проблемите, но целта е да я конфигурирам тази машина както трябва.


Титла: Помощ за оптимизация на сървър
Публикувано от: VladSun в May 20, 2008, 01:40
Струва ми се, че си дал прекалено много RAM на InnoDB:
innodb_buffer_pool_size=1500M

трябва да е малко над големината на ДБ таблиците.
Да не би Апачето да влиза в swap-a заради това?


Титла: Помощ за оптимизация на сървър
Публикувано от: VladSun в May 20, 2008, 01:45
И провери какво ползваш за innodb_flush_method - трябва да е O_DIRECT.





Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 02:35
Благодаря ти за отговорите.

ами innodb_flush_method е този, който е default O_DSYNC();

Интересното е, че има свободна памет, но апачето продължава да ползва повече процесор. А какво виждам, ползването на swap е най-вероятно заради метода.


Титла: Помощ за оптимизация на сървър
Публикувано от: VladSun в May 20, 2008, 03:23
Ако не е тайна - какво се пуснато на сайта - т.е. каква система ползваш, език и т.н.?


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 07:24
Не е тайна разбира се, ами ползваме ezpublish framework, на php е.


Титла: Помощ за оптимизация на сървър
Публикувано от: teleport в May 20, 2008, 08:41
apache-то не ползва cpu, прави го php-то. Освен това "load average" е малко заблуждаващо: " The load average is the sum of the run queue length and the number of jobs currently running on the CPUs". Т.е. ако имаш едноядрен процесор load average >= 2 е зле, но ако имаш 4 ядрен процесор означава че 2 от ядрата в момента са свободни и нищо не правят.

За оптимизация на centos 5 първото нещо е да провериш дали irqbalance работи и ако не да го инсталираш/пуснеш: "yum -y install irqbalance; chkconfig irqbalance on; service irqbalance start". Тука има една тънкост. В Centos 5 irqbalance работи само ако имаш поне 2 ядра и ако ядрата имат отделен cache. Примерно на процесор "Intel® Core™2 CPU 4300 @ 1.80GHz" irqbalance директно прекратява работа защото двете ядра са с общ cache.

Проблем също може да е iowait.  6.8% не е много, но е достатъчно да за вкарва apache процес в dead състояние.

Според top най-много процесор ползва "java": 5 и половина часа от общ uptime 11 часа. Не съм запознат с ezpublish и дали ползва java-та, но определено java-та ползва най-много ресурси в случая.

В изискванията на ezpublish не пише нищо за java, така че явно във вашия случай се ползва за нещо друго.


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 09:45
Здравей, благодаря за отговора.

Проверих, irqbalance е инсталиран и стартиран.

Ето това е информацията за процесора:

/proc/cpuinfo

Цитат

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 35
model name      : Dual Core AMD Opteron™ Processor 175
stepping        : 2
cpu MHz         : 2210.220
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3d
now pni lahf_lm cmp_legacy
bogomips        : 4421.69
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp

processor       : 1
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 35
model name      : Dual Core AMD Opteron™ Processor 175
stepping        : 2
cpu MHz         : 2210.220
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 1
cpu cores       : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni lahf_lm cmp_
legacy
bogomips        : 4419.77
TLB size        : 1024 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp


Java та се ползва от един сървис наречен solr. Използваме го за индексиране, но обикновено той се стратира всеки час за около 5 мин и спира.


Титла: Помощ за оптимизация на сървър
Публикувано от: gat3way в May 20, 2008, 11:13
memory sizing-a нещо не е като хората. Колко е memory_limit на PHP? java процеса с какъв heap size се вдига (-Xmx параметъра)? Защо apache процесите "изяждат" толкова много памет?


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 11:26
и аз забелязвам, че когота load avarage скача, свободната памет намаля, макар че има cached memory достатъчно.

memory_limit е 128M

така като гледам java-та не е зададена с параметъра за макс. памет.

За апаче процесите съм дал MaxRequestPerChild да е 4000
а MaxSpareServer го направих 50. Намалих даже малко паметта, която се ползва от mysql, но все още продължава да се получава същия ефект. И аз мисля, че апаче процесите не трябва да ползват толкова рам.


Титла: Помощ за оптимизация на сървър
Публикувано от: gat3way в May 20, 2008, 11:54
Ми то не се налага да ползва максималната памет. jvm-то обаче като го запалиш си malloc-ва това, указано като големина на heap-а. Като гледам му е оказано нещо около 1200-1300 мегабайта.

Машината има 4 гигабайта памет. Нека 2gb ти ги взема mysql-a, 400-500 ти ги ползва apache-a (предполагам форкнатите процеси си споделят голяма част от паметта, COW). Останалите процеси и ядрото примерно ядат още около 500 мегабайта (гледам има питонски процеси някакви). Общо това прави към 3 гб. Когато се вдигне твоят java процес с heap size=1.2gb, каквото там е имало pagecache/vfs cache се evict-ва, но въпреки всичко паметта не достига и затва по-"неизползваните" страници в паметта влизат в суоп-а.

load-а се вдига поради няколко причини в тази ситуация - първо имаш повече page faults и вадене на страници от суоп-а в паметта и обратно, което са си бавни дискови операции. От друга страна, "изхвърлената кеширана информация" води дотам че следващите дискови операции ще са свързани с повече disk I/O, съответно процесите ще бъдат за малко повече време в uninterruptable sleep и ерго в runqueue.

Затова ако можеш намали това разхищение. "кажи" на mysql-a да ползва по-малко памет, виж ако можеш да разкараш ненужни apache модули, намали heap size-a на джавата, ако има вариант оптимизирай по някакъв начин PHP кода. Или (например) сложи някоя допълнителна банка памет.

Въобще не е казано, че ако нещо може да ползва повече оперативна памет, то ще върви по-бързо. В общият случай е така, но в гранични случаи, когато РАМ-та попривърши и почнеш да влизаш леко в суоп-а, нещата са различни :)


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 12:15
Да, мисля че си прав. Не бях обърнал внимание, че джавата си заделя толкова heap. Паметта за mysql го намалих и сега heap за него е 1500-1600 МБ. Това помогна от части, сега ще намаля и джавата.


Титла: Помощ за оптимизация на сървър
Публикувано от: VladSun в May 20, 2008, 13:43
Цитат (ferrari_m @ Май 20 2008,02:35)
ами innodb_flush_method е този, който е default O_DSYNC();

"Големите глави" казват да се използва O_DIRECT за да не се получава повторно и излишно кеширане от страна на ОС-а.


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 14:32
моля ви се някой ако може да помогне спешно да конфигурираме този сървър, че ще загубим този клиент, а не трябва. Ще получите съответното заплащане срещу услугата.

може да ви дадем достъп до сървъра и да опитате да го конфигурирате.

Възможно ли е ?


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 15:29
Друго, което също искам да питам е дали е необходимо да се пресъздават на ново базите данни като сменя flush метода или не е необходимо?


Титла: Помощ за оптимизация на сървър
Публикувано от: gat3way в May 20, 2008, 15:30
Аааа, как ще пресъздаваш базата, стига глупости :)


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 20, 2008, 15:53
Ограничих джавата и това помогна доста. Все още е високо използването, но не както преди това. Сега трябва да конфигугирам другите неща по-добре. Сега load avarage не скача колкото преди промените.


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 22, 2008, 21:44
Оказа се, че е един от ботовете на гугъл, който използваше прекалено много поцесорно време.

Сега системата е по-добре но все още се претоварва малко повече. Понякога load avarage стига до 3.5 със следната конфигурация. Моля ако може да ми предложите кои параметри мога да променя и да я направя по-стабилна. Това, което също прави проблем, е че mysql от време на време използва доста процесор, което заедно с apache кара системата да се товари повече.

Ето това е конфигурацията на apache в момента.

Примерен код

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 100

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 1000

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 2

##
## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers      25
MinSpareServers   10
MaxSpareServers   50
ServerLimit      100
MaxClients       100
MaxRequestsPerChild 15000
</IfModule>


Може да ви се сторят малко странни някои стойности, но просто тествах и за сега системата се държи най-добре с тези, но все пак би било добре ако може да препоръчате как да ги променя, така че да получа оптималност.

my.cnf

Примерен код

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=0
bind-address=127.0.0.1
max_connections=300
# Set MyISAM parameters
key_buffer_size=3M
tmp_table_size=16M
# Set InnoDB parameters
innodb_file_per_table
# Set buffer pool size to 50 - 80% of availiable memory.
innodb_buffer_pool_size=1000M
innodb_additional_mem_pool_size=50M
#innodb_flush_method=O_DIRECT
# Set the log file size to about 25% of the buffer pool size.
#innodb_log_file_size=5M
#innodb_log_buffer_size=1M
table_cache=1024
#sort_buffer_size=3M
query_cache_type=1
query_cache_limit=1M
query_cache_size=30M
net_read_timeout=120
#long_query_time=10
#log_warnings=2
#log_slow_queries=/var/log/mysql/slow-queries.log
collation_server=utf8_unicode_ci
character_set_server=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysql.server]
user=mysql
basedir=/var/lib

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


dstat output:

Примерен код

  0   1  99   1   0   0| 1.8  2.1  2.3|2306M   88M 1025M  537M|  15k   24k|  0   0   0| 122M 6021M|1073   172
  0   0  98   1   0   0| 1.8  2.1  2.3|2306M   88M 1025M  537M|1691B   21k|  0   0   0| 122M 6021M|1060   141
 26   7  66   1   0   0| 1.8  2.1  2.3|2306M   88M 1025M  537M| 927B 1124B|  1   0   0| 122M 6021M|1027   616
 44   6  43   6   0   0| 1.8  2.1  2.3|2306M   88M 1025M  537M| 536B 2926B|  1   0   0| 122M 6021M|1196   866
 49  13  38   0   0   0| 1.8  2.1  2.3|2308M   88M 1025M  534M| 338B   18k|  1   0   0| 122M 6021M|1021  1821
 32  13  55   0   0   0| 1.8  2.1  2.3|2306M   88M 1025M  537M|2315B   13k|  1   0   0| 122M 6021M|1038   600
 41  10  50   0   0   0| 1.8  2.1  2.3|2306M   88M 1025M  537M| 752B 6672B|  1   0   0| 122M 6021M|1022   695
 45   6  49   1   0   0| 1.8  2.1  2.3|2306M   88M 1025M  537M|1615B 5959B|  1   0   0| 122M 6021M|1029  1677
 33   8  59   1   0   0| 1.8  2.1  2.3|2306M   88M 1025M  537M|1054B  968B|  1   0   0| 122M 6021M|1036  1698
  3   1  95   0   0   0| 1.6    2  2.3|2306M   88M 1025M  537M|2481B   30k|  2   0   0| 122M 6021M|1048   210
 61  18  20   2   0   0| 1.6    2  2.3|2306M   88M 1025M  537M|2560B 4390B|  5   0   0| 122M 6021M|1036  1245
 88  12   0   0   0   0| 1.6    2  2.3|2307M   88M 1025M  536M|2695B 1433B| 12   0   0| 122M 6021M|1014  2206
 78  22   0   0   0   1| 1.6    2  2.3|2306M   88M 1025M  537M| 810B 9771B|  6   0   0| 122M 6021M|1056  1188
 86  15   0   0   0   0| 1.6    2  2.3|2310M   88M 1025M  532M|2008B 8749B| 16   0   0| 122M 6021M|1019  1411
 77  23   0   0   0   0| 2.3  2.1  2.4|2319M   88M 1025M  523M|1929B   16k| 10   0   0| 122M 6021M|1024  1868
 81  19   0   0   0   0| 2.3  2.1  2.4|2325M   88M 1025M  517M| 909B 6562B| 12   0   0| 122M 6021M|1021  1502
 83  17   0   0   0   0| 2.3  2.1  2.4|2329M   88M 1025M  514M| 818B 3826B| 10   0   0| 122M 6021M|1009  1831
 82  17   0   0   0   0| 2.3  2.1  2.4|2335M   88M 1025M  507M|1133B  784B| 14   0   0| 122M 6021M|1035  2253
 81  19   0   0   0   0| 2.3  2.1  2.4|2347M   88M 1025M  496M|5109B   20k|  5   0   1| 122M 6021M|1063  1917
 85  14   0   0   0   0| 2.9  2.3  2.4|2331M   88M 1025M  511M|3441B   83k|  6   0   0| 122M 6021M|1093  2186
 86  15   0   0   0   0| 2.9  2.3  2.4|2327M   88M 1025M  515M|4960B   61k|  3   0   0| 122M 6021M|1092  1847
 70  15  16   0   0   0| 2.9  2.3  2.4|2320M   88M 1025M  523M|4788B   59k|  2   0   0| 122M 6021M|1038  2317
 25   7  68   0   0   0| 2.9  2.3  2.4|2321M   88M 1025M  522M|4617B   38k|  2   0   0| 122M 6021M|1063   703
 41  10  50   0   0   0| 2.9  2.3  2.4|2325M   88M 1025M  518M|4213B   76k|  2   0   0| 122M 6021M|1029   683
 44   6  49   0   0   0| 2.8  2.3  2.4|2326M   88M 1025M  516M|2768B   31k|  2   0   0| 122M 6021M|1031  2002
----total-cpu-usage---- ---load-avg--- ------memory-usage----- -net/total- ---procs--- -swp/total- ---system--
usr sys idl wai hiq siq| 1m   5m  15m | used  buff  cach  free| recv  send|run blk new| used  free| int   csw
 68  17  16   1   0   0| 2.8  2.3  2.4|2324M   88M 1025M  519M|2906B   23k|  5   0   0| 122M 6021M|1054  2513
 84  17   0   0   0   0| 2.8  2.3  2.4|2330M   88M 1025M  512M|4795B   35k|  7   0   0| 122M 6021M|1046  2108
 79  21   0   0   0   0| 2.8  2.3  2.4|2332M   88M 1025M  511M|5198B   22k| 12   0   0| 122M 6021M|1048  1432
 62  16  22   1   0   1| 2.8  2.3  2.4|2323M   88M 1025M  520M|4844B   38k|  3   0   0| 122M 6021M|1111  1770
 40  11  50   0   0   0| 2.6  2.2  2.4|2327M   89M 1026M  516M|6348B   36k|  2   0   2| 122M 6021M|1048  1925
 35  10  55   0   0   0| 2.6  2.2  2.4|2322M   89M 1026M  520M|2588B 7360B|  1   0   0| 122M 6021M|1022   477
 17   6  77   0   0   0| 2.6  2.2  2.4|2322M   89M 1026M  520M|2220B   21k|  1   0   0| 122M 6021M|1043   531
  0   0 100   0   0   0| 2.6  2.2  2.4|2322M   89M 1026M  520M|3587B   24k|  1   0   0| 122M 6021M|1038   132
 22  10  67   0   0   0| 2.6  2.2  2.4|2322M   89M 1026M  520M|1892B 8625B|  1   0   0| 122M 6021M|1042   491
 43  12  43   2   1   0| 2.5  2.2  2.4|2322M   89M 1026M  520M|2660B   33k|  4   0   0| 122M 6021M|1044   923
 83  17   0   0   0   0| 2.5  2.2  2.4|2327M   89M 1026M  515M|2877B 4659B|  9   0   0| 122M 6021M|1020  1316
 79  21   0   0   0   0| 2.5  2.2  2.4|2331M   89M 1026M  511M|4465B   43k|  5   0   0| 122M 6021M|1063  2207
 87  12   0   0   0   0| 2.5  2.2  2.4|2339M   89M 1026M  503M|5910B   57k|  6   0   0| 122M 6021M|1055  1990
 74  17   8   0   0   0| 2.5  2.2  2.4|2332M   89M 1026M  510M|4242B   21k|  2   0   0| 122M 6021M|1252  2689
 26   7  66   2   0   0| 2.4  2.2  2.4|2331M   89M 1026M  511M|4415B   53k|  2   0   0| 122M 6021M|1071  1092
 49  12  38   0   0   0| 2.4  2.2  2.4|2331M   89M 1026M  511M|5817B   27k|  2   0   0| 122M 6021M|1030   947
 45   6  50   0   0   0| 2.4  2.2  2.4|2331M   89M 1026M  511M| 460B   12k|  2   0   0| 122M 6021M|1012  1713
 29   7  64   0   0   0| 2.4  2.2  2.4|2331M   89M 1026M  511M| 326B 4984B|  1   0   0| 122M 6021M|1031  1445
  0   1  78  21   0   0| 2.4  2.2  2.4|2331M   89M 1026M  511M|1966B   20k|  1   0   0| 122M 6021M|1282   141
  0   0 100   0   0   0| 2.2  2.2  2.4|2331M   89M 1026M  511M|  70B  438B|  1   0   0| 122M 6021M|1030    88
 25   7  67   1   0   0| 2.2  2.2  2.4|2331M   89M 1026M  511M| 556B 4648B|  2   0   0| 122M 6021M|1048   588
 72  16  13   0   0   0| 2.2  2.2  2.4|2332M   89M 1026M  510M|4263B   22k|  4   0   2| 122M 6021M|1046  1402
 81  18   0   1   0   0| 2.2  2.2  2.4|2331M   89M 1026M  511M|2054B   10k|  7   0   0| 122M 6021M|1034  1803
 77  14   9   0   0   0| 2.2  2.2  2.4|2331M   89M 1026M  511M|4505B   14k|  3   0   0| 122M 6021M|1103  1945


top:

Примерен код

top - 20:27:35 up 3 days,  8:40,  3 users,  load average: 2.31, 2.50, 2.56
Tasks: 135 total,   1 running, 134 sleeping,   0 stopped,   0 zombie
Cpu(s): 37.3%us, 11.8%sy,  0.0%ni, 50.4%id,  0.5%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4051316k total,  3634788k used,   416528k free,    86980k buffers
Swap:  6291448k total,   125436k used,  6166012k free,   999584k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                              
31241 apache    16   0  400m  89m  47m S   54  2.3   1:46.83 httpd                                
30981 apache    15   0  414m 105m  48m S   36  2.7   2:02.34 httpd                                
31341 apache    15   0  413m  98m  42m S    7  2.5   1:16.73 httpd                                
29235 mysql     15   0 1435m 845m 4580 S    1 21.4   5:43.70 mysqld                              
31456 apache    15   0  399m  83m  40m S    0  2.1   0:36.05 httpd                                
31751 anebi     15   0 92940 6812 1696 S    0  0.2   0:00.36 python                              
31859 anebi     15   0 12716 1080  792 R    0  0.0   0:00.21 top                                  
    1 root      18   0 10312  580  544 S    0  0.0   0:04.58 init                                
    2 root      RT   0     0    0    0 S    0  0.0   0:00.48 migration/0                          
    3 root      34  19     0    0    0 S    0  0.0   0:01.84 ksoftirqd/0                          
    4 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0                          
    5 root      RT   0     0    0    0 S    0  0.0   0:00.05 migration/1                          
    6 root      34  19     0    0    0 S    0  0.0   0:00.05 ksoftirqd/1                          
    7 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/1                          
    8 root      10  -5     0    0    0 S    0  0.0   0:00.01 events/0                            
    9 root      10  -5     0    0    0 S    0  0.0   0:00.19 events/1                            
   10 root      10  -5     0    0    0 S    0  0.0   0:00.00 khelper                              
   47 root      11  -5     0    0    0 S    0  0.0   0:00.00 kthread                              
   52 root      10  -5     0    0    0 S    0  0.0   0:00.15 kblockd/0                            
   53 root      10  -5     0    0    0 S    0  0.0   0:00.45 kblockd/1                            
   54 root      15  -5     0    0    0 S    0  0.0   0:00.00 kacpid                  


top memory order

Примерен код

top - 20:42:33 up 3 days,  8:55,  3 users,  load average: 2.32, 2.02, 2.17
Tasks: 132 total,   2 running, 130 sleeping,   0 stopped,   0 zombie
Cpu(s): 76.3%us, 18.1%sy,  0.0%ni,  4.8%id,  0.7%wa,  0.2%hi,  0.0%si,  0.0%st
Mem:   4051316k total,  3623656k used,   427660k free,    94456k buffers
Swap:  6291448k total,   125436k used,  6166012k free,  1073264k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                              
29235 mysql     15   0 1435m 854m 4580 S    6 21.6   6:20.32 mysqld                              
31812 root      19   0  633m 117m  15m S    0  3.0   0:07.19 java                                
31885 apache    15   0  423m 108m  40m S    0  2.7   0:21.03 httpd                                
31899 apache    15   0  402m  86m  40m S    0  2.2   0:18.86 httpd                                
31888 apache    15   0  397m  80m  41m S    0  2.0   0:27.83 httpd                                
31890 apache    15   0  396m  80m  40m S    0  2.0   0:22.36 httpd                                
32040 apache    15   0  395m  79m  40m S    0  2.0   0:18.91 httpd                                
31896 apache    15   0  396m  79m  40m S    0  2.0   0:14.92 httpd                                
32041 apache    15   0  396m  79m  40m S    0  2.0   0:18.93 httpd                                
32039 apache    15   0  395m  79m  40m S    0  2.0   0:10.70 httpd                                
32031 apache    15   0  393m  78m  41m S    0  2.0   0:12.85 httpd                                
32035 apache    15   0  393m  77m  39m S    0  2.0   0:10.70 httpd                                
31900 apache    15   0  393m  76m  40m S    0  1.9   0:17.99 httpd                                
32045 apache    15   0  392m  76m  40m S    7  1.9   0:17.18 httpd                                
32044 apache    15   0  392m  76m  40m S    0  1.9   0:19.12 httpd                                
31894 apache    18   0  391m  76m  40m S    0  1.9   0:29.99 httpd                                
32032 apache    19   0  392m  76m  39m S   18  1.9   0:23.35 httpd                                
32046 apache    15   0  390m  75m  41m S    0  1.9   0:13.53 httpd                                
31895 apache    15   0  391m  75m  40m S    0  1.9   0:23.40 httpd                                
31902 apache    15   0  391m  75m  40m S    0  1.9   0:28.83 httpd                                
31892 apache    21   0  392m  75m  39m S   37  1.9   0:25.35 httpd                                
32037 apache    16   0  390m  74m  40m S   50  1.9   0:20.91 httpd                                
32043 apache    15   0  390m  74m  40m S    0  1.9   0:08.57 httpd                                
31897 apache    15   0  388m  72m  40m S    0  1.8   0:27.93 httpd                                
31884 apache    15   0  387m  71m  41m S    0  1.8   0:10.93 httpd                                
31908 apache    15   0  386m  71m  41m S    0  1.8   0:30.18 httpd                                
31901 apache    15   0  386m  70m  41m S    0  1.8   0:22.81 httpd                                
31891 apache    15   0  386m  70m  41m S    0  1.8   0:24.55 httpd                                
31907 apache    15   0  385m  70m  40m S    0  1.8   0:15.27 httpd                                
31906 apache    15   0  385m  69m  40m S    0  1.8   0:30.79 httpd                                
32030 apache    15   0  388m  69m  39m S    0  1.8   0:35.22 httpd                                
31898 apache    15   0  384m  69m  40m S    0  1.8   0:23.15 httpd                                
31903 apache    15   0  385m  69m  40m S    0  1.7   0:28.69 httpd                                
31887 apache    15   0  385m  68m  41m S    0  1.7   0:33.89 httpd                                
31904 apache    15   0  385m  68m  40m S    0  1.7   0:26.29 httpd


Също забелязах, че по принцип ботовете са една от причините натоварването да скача изведнъж. Как мога да разреша и този проблем?

Друго което искам да питам е за Solr, който ползва Java. Като тръгне да индексира ползва почти винаги 90-100% CPU, как мога да разреша и този проблем? Дал съм му Xmx200M

apachetop ми показва обикновено че процесорното време за request е средна 30-50  в най-натоварен момент CPU load макс 30-40%

П.П.

Сега се сетих, че мога да спра KeepAlive и направих следната конфигурация, която помогна малко да намаля натоварването:

<IfModule prefork.c>
StartServers      25
MinSpareServers   10
MaxSpareServers   70
ServerLimit      150
MaxClients       150
MaxRequestsPerChild 6000
</IfModule>


Но мисля, че още може да се оптимизира.

Идеи?





Титла: Помощ за оптимизация на сървър
Публикувано от: peterangelov в May 23, 2008, 11:24
може да прозвучи леко лаишко - но защо не си поиграеш с nice приоритета на процесите? - не знам доколко е удачно в твоя случай, но винаги може да се пробва


Титла: Помощ за оптимизация на сървър
Публикувано от: badata в May 27, 2008, 19:40
Спри си апачето и така виж колко се товари процесора ,ако не се товари .... знаеш от каде ти идва проблема.


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 27, 2008, 23:55
Здравейте,

благодаря на всички за отговорите и идеите, които споделихте за да ми помогнете да разреша проблема. Поиграх си още малко с апачето, както направих малко промени в mysql, конфигурацията. Това помогна да намаля натоварването. В момента се държи добре и няма проблеми. Един от основните проблеми беше паметта, а другият значителен проблем беше бота на гугъл, който използваше много много процесорно време. Това товареше системата и ядеше ресурсите.

Ако имам някои други въпроси ще ги споделя с вас и ако мога да помогна с нещо, също бих се радвал.

Благодаря отново!

Поздрави, Али Неби!


Титла: Помощ за оптимизация на сървър
Публикувано от: Uvigii в May 29, 2008, 13:33
Цитат (ferrari_m @ Май 22 2008,22:44)
Това, което също прави проблем, е че mysql от време на време използва доста процесор, което заедно с apache кара системата да се товари повече.

Здравей,
пробва ли ?
Примерен код
CHECK TABLE `табличка`
 OPTIMIZE TABLE `табличка`  


Титла: Помощ за оптимизация на сървър
Публикувано от: Ali Nebi в May 29, 2008, 13:52
Здравей,

да.

Увеличих малко query_cach_size параметъра, защото триеше доста заявки от кеша, за да освободи памет за другите.