lighttpd / fastCGI (php5) Optimierung

Apache, Lighttpd, nginx, Cherokee
Post Reply
me-myself-and-i
Posts: 21
Joined: 2006-05-08 13:34
 

lighttpd / fastCGI (php5) Optimierung

Post by me-myself-and-i »

hi,

ich habe einen server (xeon 2,4 GB, 2GB RAM, SCSI Platten (Dell 1850)) dieser ist hauptsächlich für das ausliefern eines weblogs (wordpress) zuständig.

auf dem server läuft zusätzlich die mysqldatenbank und der mailserver (sicherlich nicht optimal, aber das muss erstmal so gehen)

die benutzten pakete

- lighttpd (1.4.11)
- php5-cgi (5.1.2)
- mysql 5 (5.0.19)

sind standard ubuntu pakete (drapper) somit keine eigenkompilate.

das ganze ist ähnlich aufgesetzt wie es hier im wiki von lighttpd beschrieben ist.

die wahl viel wegen der php berechtigungen und der server sicherheit auf dieses setup.

die anpassungen sind im moment maginal in dem fastcgi spawn script

Code: Select all

## number of PHP childs to spawn
PHP_FCGI_CHILDREN=8

## number of request server by a single php-process until is will be restarted
PHP_FCGI_MAX_REQUESTS=250
zusätzlich ist der zentoptimizer (version 3.0) installiert, da dieser meines wissens nach keinerlei probleme mit php5.1 hat.

ab ca 5000pi/stunde liegt die load des systems bei fast 3. dabei gibt es dann auch noch einmal peaks und die load geht bis auf ca. 9 hauptsächlich wird die load durch die fast-cgi's verursacht die von der hauptdomain benutzt werden.

meine php.ini schaut so aus:

Code: Select all

short_open_tag = On
asp_tags = Off
precision    =  12
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func=
serialize_precision = 100
allow_call_time_pass_reference = On
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
disable_functions =
disable_classes =
expose_php = Off
display_errors = On
display_startup_errors = Off
log_errors = Off
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
variables_order = "EGPCS"
register_globals = Off
register_long_arrays = On
register_argc_argv = On
auto_globals_jit = On
post_max_size = 16M
magic_quotes_gpc = On
magic_quotes_runtime = Off
magic_quotes_sybase = Off
user_dir =
file_uploads = On
upload_max_filesize = 8M
default_socket_timeout = 60
extension=mysql.so
extension=gd.so
extension=curl.so
extension=mhash.so
extension=sqlite.so
extension=xmlrpc.so 
extension=xsl.so
[Syslog]
define_syslog_variables  = Off
SMTP = localhost
smtp_port = 25
sql.safe_mode = Off
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
mysql.allow_persistent = On
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off
[Session]
session.save_handler = files
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_divisor     = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.0.0
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.0.0
zend_optimizer.version=3.0.0
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so
ich weiß die php.ini ist nicht 100% auf performance getuned, da aber noch ein webmailer auf dem gleichen system läuft und die automatischen upload funktionen von wordpress genutzt werden (müssen/sollen) ist es so ohne grosse einschränkungen für die user zu benutzen.

mein anliegen ist es jetzt diese kiste möglichst so weit auf performance zu tunen wie möglich, damit ein optimum aus der hardware gezogen wird.

wenn ich mir vmstat anschaue ist es für diese kiste eigentlich lächerlich

Code: Select all

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 1  0      0 445828  37512 1254488    0    0     1    33   46     5 10  1 88  0
 0  0      0 445960  37520 1254480    0    0     0    55  283   307 21  2 76  0
 3  0      0 445944  37520 1254480    0    0     0     5  398   470 58  4 38  0
 1  0      0 445820  37520 1254548    0    0     0     0  413   565 35  3 62  0
 1  0      0 453756  37524 1254612    0    0     0   474  460   522 50  3 47  0
 6  0      0 452252  37524 1254612    0    0     0     0  371   765 96  4  0  0
 9  0      0 446764  37528 1254676    0    0     0    58  300   538 94  6  0  0
 9  0      0 446616  37528 1254676    0    0     0     2  396   741 94  6  0  0
 8  0      0 445864  37528 1254676    0    0     0    32  311   651 94  6  0  0
 6  0      0 446384  37532 1254740    0    0     0    38  401   798 95  5  0  0
 0  0      0 446260  37532 1254740    0    0     0     0  405   756 86  4 10  0
 1  0      0 446332  37536 1254872    0    0     0   101  322   576 64  4 32  0
 2  0      0 445960  37536 1254872    0    0     0     0  435   615 75  5 20  0
 2  0      0 446216  37536 1254872    0    0     0    92  405   509 27  4 69  0
 0  0      0 446192  37540 1254868    0    0     0    15  348   624 72  3 25  0
 1  0      0 446216  37540 1254936    0    0     0    11  298   189  5  0 95  0
 0  0      0 455020  37540 1254936    0    0     0    64  318   493 19  2 79  0
es scheint wirklich nur an dem php5-cgi zu liegen, hier bitte ich jetzt um tips und vielleicht auch hilfen wie ich das noch mehr tunen kann.

danke für die bisher investierte zeit des lesens.
braindead
Posts: 250
Joined: 2002-10-22 09:49
Location: vorm Rechner
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by braindead »

poste doch mal einen top auszug bei dem man sieht wo die Leistung denn so verloren geht. So kann man nur raten, fehlender Datenbankindex, schlechte Scripte, usw.
me-myself-and-i
Posts: 21
Joined: 2006-05-08 13:34
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by me-myself-and-i »

sorry natürlich doof von mir den top zu vergessen. ich habe jetzt einen gerade aktuellen top genommen. die restlichen prozesse sind zu vernachlässigen und mit knapp 100 prozessen auch nicht übermässig.

Code: Select all

top - 14:45:32 up 4 days, 23:29,  1 user,  load average: 3.83, 4.71, 4.79
Tasks: 108 total,   3 running, 105 sleeping,   0 stopped,   0 zombie
Cpu0  : 62.5% us,  4.8% sy,  0.0% ni, 31.7% id,  0.0% wa,  0.3% hi,  0.6% si
Cpu1  : 58.3% us,  3.8% sy,  0.0% ni, 37.8% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   2075864k total,  1160740k used,   915124k free,    39672k buffers
Swap:        0k total,        0k used,        0k free,   813660k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                             
27807 web3      17   0 27360  13m 3228 R   24  0.7   0:10.58 php5-cgi                                                                                                                                            
27912 web3      16   0 26892  13m 3232 S   20  0.6   0:07.63 php5-cgi                                                                                                                                            
27867 web3      15   0 27368  13m 3228 S   19  0.7   0:07.23 php5-cgi                                                                                                                                            
27911 web3      15   0 26992  13m 3224 S   18  0.7   0:04.57 php5-cgi                                                                                                                                            
27889 web3      15   0 27288  13m 3224 S   15  0.7   0:06.02 php5-cgi                                                                                                                                            
26833 web3      16   0 27380  13m 3536 S   13  0.7   0:32.26 php5-cgi                                                                                                                                            
28113 web3      15   0 27288  13m 3160 S    8  0.7   0:01.05 php5-cgi                                                                                                                                            
22540 mysql     15   0  127m  27m 4372 S    7  1.4   1:18.35 mysqld                                                                                                                                              
28017 web3      16   0 26912  13m 3224 S    4  0.6   0:02.73 php5-cgi                                                                                                                                            
25197 www-data  15   0  8428 6224 1236 S    1  0.3   1:10.76 lighttpd               
wie gesagt es handelt sich um ein fast unmodifziertes wordpress das auf dem server läuft. es ist ja nicht so, das wir nicht schon 'ge-heise-d' oder 'ge-spiegel-ed' wurden, aber für mein empfinden ist die load einfach sehr hoch.
dazu muss ich aber auch sagen das es mein erster server mit diesem setup ist.

achja es gibt keinerlei mysql-slow queries, das habe ich als erstes überprüft!
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by Joe User »

Versuche es mal mit folgender php.ini (Pfade anpassen):

Code: Select all

[PHP]
engine = On
zend.ze1_compatibility_mode = Off
short_open_tag = On
asp_tags = Off
precision = 14
y2k_compliance = On
output_buffering = 4096
output_handler =
zlib.output_compression = On
zlib.output_handler =
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 100
allow_call_time_pass_reference = On
safe_mode = Off
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH
open_basedir =
disable_functions =
disable_classes =
highlight.string = #DD0000
highlight.comment = #FF9900
highlight.keyword = #007700
highlight.bg = #FFFFFF
highlight.default = #0000BB
highlight.html = #000000
ignore_user_abort = Off
expose_php = Off
max_execution_time = 300
max_input_time = 600
memory_limit = 32M
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = Off
html_errors = Off
error_log = "/var/log/lighttpd/phperr_log"
arg_separator.output = "&"
arg_separator.input = ";&"
variables_order = "GPCS"
register_globals = Off
register_long_arrays = Off
register_argc_argv = Off
auto_globals_jit = Off
post_max_size = 8M
magic_quotes_gpc = On
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
always_populate_raw_post_data = Off
include_path = ".:/usr/share/php"
doc_root =
user_dir =
enable_dl = On
file_uploads = On
upload_tmp_dir =
upload_max_filesize = 2M
cgi.fix_pathinfo = 1
allow_url_fopen = On
from = "anonymous@localhost"
user_agent = ""
default_socket_timeout = 60
auto_detect_line_endings = Off

[extensions]
extension=mysql.so
extension=gd.so
extension=curl.so
extension=mhash.so
extension=sqlite.so
extension=xmlrpc.so
extension=xsl.so

[Syslog]
define_syslog_variables  = Off

[mail function]
SMTP = localhost
smtp_port = 25

[SQL]
sql.safe_mode = Off

[MySQL]
mysql.allow_persistent = Off
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[MySQLi]
mysqli.max_links = -1
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = On

[PostgresSQL]
pgsql.allow_persistent = Off
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

[bcmath]
bcmath.scale = 0

[Session]
session.save_handler = files
session.save_path = "/dev/shm"
session.use_cookies = 1
session.use_only_cookies = 0
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = 0
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 16
session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,fieldset="
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
me-myself-and-i
Posts: 21
Joined: 2006-05-08 13:34
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by me-myself-and-i »

danke ich werde das jetzt mal in der config etwas beobachten ...
me-myself-and-i
Posts: 21
Joined: 2006-05-08 13:34
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by me-myself-and-i »

im moment bin ich

Code: Select all

Requests	32 req/s
Traffic	185.61 kbyte/s
im durchschnitt seit dem neustart.

die load sieht besser aus

Code: Select all

top - 16:54:28 up 5 days,  1:38,  2 users,  load average: 3.82, 3.27, 4.01
Tasks: 116 total,   4 running, 112 sleeping,   0 stopped,   0 zombie
Cpu0  : 94.4% us,  2.9% sy,  0.0% ni,  2.0% id,  0.0% wa,  0.3% hi,  0.3% si
Cpu1  : 96.1% us,  3.9% sy,  0.0% ni,  0.0% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   2075864k total,  1227240k used,   848624k free,    48136k buffers
Swap:        0k total,        0k used,        0k free,   871904k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                             
10652 web3      15   0 25828  12m 3536 S   35  0.6   0:16.69 php5-cgi                                                                                                                                            
10349 web3      16   0 25956  12m 3100 R   31  0.6   0:26.90 php5-cgi                                                                                                                                            
10477 web3      16   0 25720  12m 3096 S   25  0.6   0:20.14 php5-cgi                                                                                                                                            
10951 web3      15   0 25364  12m 3472 S   24  0.6   0:10.17 php5-cgi                                                                                                                                            
10775 web3      15   0 25704  12m 3100 S   24  0.6   0:12.61 php5-cgi                                                                                                                                            
11005 web3      16   0 25820  12m 3096 R   23  0.6   0:07.61 php5-cgi                                                                                                                                            
11276 web3      15   0 25340  11m 2984 S   15  0.6   0:00.52 php5-cgi                                                                                                                                            
22540 mysql     15   0  128m  35m 4444 S   10  1.7  12:24.69 mysqld                                                                                                                                              
10291 web3      16   0 25728  12m 3100 S    9  0.6   0:27.63 php5-cgi                                                                                                                                            
25952 www-data  15   0  7464 5300 1252 S    3  0.3   0:33.24 lighttpd   
jetzt mal beobachten wie es morgen mittag wieder aussieht...
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by Joe User »

Zusätzlich solltest noch vom Zend-Optimizer auf den PECL-APC umsteigen.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
me-myself-and-i
Posts: 21
Joined: 2006-05-08 13:34
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by me-myself-and-i »

mmh gibt es eine 'gute' grundkonfiguration für das apc ?

sobald ich es ohne besondere config einbinde bekomme ich fast sofort

Code: Select all

Allowed memory size of 33554432 bytes exhausted (tried to allocate 1229389901 bytes)
nur als frage, lese mich jetzt aber auch nochmal da direkt ein.

btw. zend und apc zusammen ist keine gute idee oder ?
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by Joe User »

An der Standardconfig muss normalerweise nur wenig geschraubt werden:

Code: Select all

extension=apc.so
apc.enabled="1"
apc.shm_segments="1"
apc.shm_size="128"
apc.optimization="0"
apc.num_files_hint="1000"
apc.ttl="3600"
apc.user_ttl="3600"
apc.gc_ttl="3600"
apc.cache_by_default="1"
apc.filters=""
apc.mmap_file_mask="/apc.shm.XXXXXX"
apc.slam_defense="0"
apc.file_update_protection="2"
apc.stat="1"
Den Zend-Optimizer musst Du deinstallieren, da inkompatibel.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
me-myself-and-i
Posts: 21
Joined: 2006-05-08 13:34
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by me-myself-and-i »

bisher schaut es sehr gut mit dem ganzen aus ...

Code: Select all

top - 21:41:56 up 5 days,  6:26,  2 users,  load average: 1.18, 1.26, 1.29
Tasks: 114 total,   5 running, 109 sleeping,   0 stopped,   0 zombie
Cpu0  : 38.1% us,  2.6% sy,  0.0% ni, 59.3% id,  0.0% wa,  0.0% hi,  0.0% si
Cpu1  : 36.2% us,  2.6% sy,  0.0% ni, 61.2% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:   2075864k total,  1086216k used,   989648k free,    17220k buffers
Swap:        0k total,        0k used,        0k free,   791504k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
14558 web3      17   0  148m  14m 9.8m R   12  0.7   0:25.05 php5-cgi
15907 web3      16   0  148m  14m 9928 S    8  0.7   0:02.01 php5-cgi
22540 mysql     15   0  129m  50m 4520 S    7  2.5  37:39.52 mysqld
15966 web3      17   0  148m  14m 9924 S    5  0.7   0:00.96 php5-cgi
15828 web3      16   0  148m  14m 9944 R    4  0.7   0:04.38 php5-cgi
16023 web3      17   0  148m  11m 7912 S    4  0.6   0:00.13 php5-cgi
15618 web3      16   0  148m  14m 9.8m R    1  0.7   0:06.29 php5-cgi
15825 web3      16   0  148m  14m 9952 S    1  0.7   0:01.97 php5-cgi
25952 www-data  15   0 10160 7992 1280 S    0  0.4   3:43.76 lighttpd
aber es sind auch nicht mehr so viele abfragen im moment

Code: Select all

Requests	29 req/s
Traffic	179.67 kbyte/s
ich beobachte das dann mal morgen zur mittagszeit wenn halb deutschland vorbei schaut.

danke für die hilfe!
braindead
Posts: 250
Joined: 2002-10-22 09:49
Location: vorm Rechner
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by braindead »

wenn das noch net hilft wirst du dir wohl mal die PHP Scripte ansehen müssen. Du kannst ja mal bei google suchen. Ein Linke der mir auf anhieb ins Auge gesprungen ist gibts hier
me-myself-and-i
Posts: 21
Joined: 2006-05-08 13:34
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by me-myself-and-i »

mmh mag dann vielleicht wirklich besser zu sein ... nicht mehr ganz meine baustelle, da muss jemand anderes ran ;) ich mache nur den server....

ich will aber halt garantieren können das es das optimum von der hardware/dem system ist ... aber danke für den hinweis, werde ich weitergeben!
me-myself-and-i
Posts: 21
Joined: 2006-05-08 13:34
 

Re: lighttpd / fastCGI (php5) Optimierung

Post by me-myself-and-i »

kurze meldung von meiner seite aus, in der kombination mit apc sind bis zu 60 request/sec mit einer load von unter 1 dabei ... also mehr als effektiv!

danke für die hilfe!
Post Reply