Skocz do zawartości
Zaloguj się, aby obserwować  
maress

Kiepska wydajność mod_fcgid

Polecane posty

Witam,

 

Testowa strona z phpinfo wewnatrz, mod php wyciska przy apache benchmark ponad 900 requestow.

Ta sama strona, ten sam host lecz z mod fcgid + php5 + suexec i juz tylko 100 requestow.

 

W czym moze byc problem?

Testy wykonywane na tym samym hoscie, tylko przy dwoch konfiguracjach i tych samych parametrach ab.

Sam benchmark dziala po IP.

 

Wrapper php ma ustawione na 10000 requestow, fcgid 500 per process.

Nie ma w logach nic co by wskazywalo na ubicie procesow.

 

Dzieki.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W zasadzie moze byc minimalnie wolniejsze.

Zauwazylem iz po restarcie apache wynik jest rownie dobry jak z mod php, lecz po paru testach z rzedu wydajnosc spada do okolo 100 requestow i juz nie przyspieszy, az do ponownego restartu

Czasem nawet po restarcie nie dziala ok, tak czy siak musze zrobic test na dedyku - moze tu jest jakis problem z zapychajacym sie vpsem, - z drugiej strony pamieci nie brakuje, i/o rowniez jest ok.

 

Dziwne jest rowniez to, ze zawsze jak sie 'zatnie' to wtedy maks to 100. requestow, zawsze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

W zasadzie moze byc minimalnie wolniejsze.

Zauwazylem iz po restarcie apache wynik jest rownie dobry jak z mod php, lecz po paru testach z rzedu wydajnosc spada do okolo 100 requestow i juz nie przyspieszy, az do ponownego restartu

Czasem nawet po restarcie nie dziala ok, tak czy siak musze zrobic test na dedyku - moze tu jest jakis problem z zapychajacym sie vpsem, - z drugiej strony pamieci nie brakuje, i/o rowniez jest ok.

 

Dziwne jest rowniez to, ze zawsze jak sie 'zatnie' to wtedy maks to 100. requestow, zawsze.

 

jaka wersja mod_fcgid ?

 

w logach nic nie ma ?

 

a z LogLevel debug ?

 

 

liczba klientow ab nie przekracza FcgidMaxProcessesPerClass ?

 

moze wklej konfig i parametry ab

 

--

Lazy

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

wersja ze squeeze'a:

ii libapache2-mod-fcgid 1:2.3.6-1+squeeze1 an alternative module compat with mod_fastcgi

 

ab uruchamiam tak:

ab -n 100 -c 10 http://69.202.230.62/test.php

 

caly error.log po uruchomieniu ab, loglevel debug - w access nic specjalnego nie ma:

root@user:/var/log/apache2# cat error.log
[sat Nov 03 20:22:17 2012] [info] Init: Seeding PRNG with 648 bytes of entropy
[sat Nov 03 20:22:17 2012] [info] Init: Generating temporary RSA private keys (512/1024 bits)
[sat Nov 03 20:22:17 2012] [info] Init: Generating temporary DH parameters (512/1024 bits)
[sat Nov 03 20:22:17 2012] [info] Init: Initializing (virtual) servers for SSL
[sat Nov 03 20:22:17 2012] [info] mod_ssl/2.2.16 compiled against Server: Apache/2.2.16, Library: OpenSSL/0.9.8o
[sat Nov 03 20:22:17 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[sat Nov 03 20:22:17 2012] [info] Init: Seeding PRNG with 648 bytes of entropy
[sat Nov 03 20:22:17 2012] [info] Init: Generating temporary RSA private keys (512/1024 bits)
[sat Nov 03 20:22:17 2012] [info] mod_fcgid: Process manager 1190 started
[sat Nov 03 20:22:17 2012] [info] Init: Generating temporary DH parameters (512/1024 bits)
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(253): shmcb_init allocated 512000 bytes of shared memory	
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(272): for 511952 bytes (512000 including header), recommending 32 subcaches, 133 indexes each
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(306): shmcb_init_memory choices follow
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(308): subcache_num = 32
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(310): subcache_size = 15996
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(312): subcache_data_offset = 2144
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(314): subcache_data_size = 13852
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(316): index_num = 133
[sat Nov 03 20:22:17 2012] [info] Shared memory session cache initialised
[sat Nov 03 20:22:17 2012] [info] Init: Initializing (virtual) servers for SSL
[sat Nov 03 20:22:17 2012] [info] mod_ssl/2.2.16 compiled against Server: Apache/2.2.16, Library: OpenSSL/0.9.8o
[sat Nov 03 20:22:17 2012] [notice] Apache/2.2.16 (Debian) mod_fcgid/2.3.6 mod_ssl/2.2.16 OpenSSL/0.9.8o configured -- resuming normal operations
[sat Nov 03 20:22:17 2012] [info] Server built: Sep  9 2012 21:17:33
[sat Nov 03 20:22:17 2012] [debug] prefork.c(1013): AcceptMutex: sysvsem (default: sysvsem)
[sat Nov 03 20:22:27 2012] [info] mod_fcgid: server 69.202.230.62:/var/www/php/user/php5(1199) started
[sat Nov 03 20:22:28 2012] [info] mod_fcgid: server 69.202.230.62:/var/www/php/user/php5(1202) started

 

configi:

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
ServerTokens Prod
ServerSignature Off
TraceEnable Off
HostnameLookups Off
LogLevel debug
<IfModule mpm_prefork_module>
StartServers		  3
MinSpareServers	   3
MaxSpareServers	  10
MaxClients		  256
MaxRequestsPerChild   0
</IfModule>

<IfModule mod_fcgid.c>
	FcgidConnectTimeout 30
	FcgidMaxRequestLen 11485760
	PHP_Fix_Pathinfo_Enable 1
	FcgidMaxRequestsPerProcess 500
	FcgidMaxProcessesPerClass 200
</IfModule>

# wrapper php
#!/bin/bash
PHP_FCGI_CHILDREN=0
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php5-cgi -c /var/www/php/user/php.ini

 

Dodam ze nie ma roznicy czy prefork czy worker, zmiana parametrow MPMow tez nic nie daje, z kolei jak odpale to samo pod mod_php to nawet nie ma co porownywac.

 

Teraz pod tym konfigiem, taki wynik:

Server Software:		Apache
Server Port:			80
Document Path:		  /test.php
Document Length:		625 bytes
Concurrency Level:	  10
Time taken for tests:   1.069 seconds
Complete requests:	  100
Failed requests:		12
  (Connect: 0, Receive: 0, Length: 12, Exceptions: 0)
Write errors:		   0
Total transferred:	  74086 bytes
HTML transferred:	   62486 bytes
Requests per second:	93.53 [#/sec] (mean)
Time per request:	   106.923 [ms] (mean)
Time per request:	   10.692 [ms] (mean, across all concurrent requests)
Transfer rate:		  67.67 [Kbytes/sec] received
Connection Times (ms)
		  min  mean[+/-sd] median   max
Connect:		0	0   0.4	  0	   2
Processing:	 1   64 248.9	  1	1068
Waiting:		1   61 239.6	  1	1019
Total:		  1   64 249.1	  1	1069
Percentage of the requests served within a certain time (ms)
 50%	  1
 66%	  1
 75%	  1
 80%	  1
 90%	  3
 95%   1004
 98%   1066
 99%   1069
100%   1069 (longest request)

 

a skrypt jaki przepalam:

<?
	echo "some php stuff" . "<br>";
	for ($i = 1; $i <= 100; $i++) {
			 echo $i . "<br>";
	}
	echo microtime(true);
?>

 

Czasem, dzieje sie tak ze ten config dziala, ale np po dwoch razach ab juz zdycha i jest ~100 r/s z kolei mod_php moglby leciec z ab w petli cala noc i caly czas trzymie przeszlo 3000 r/s.

Dzieki za zainteresownie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

wersja ze squeeze'a:

ii libapache2-mod-fcgid 1:2.3.6-1+squeeze1 an alternative module compat with mod_fastcgi

 

ab uruchamiam tak:

ab -n 100 -c 10 http://69.202.230.62/test.php

 

caly error.log po uruchomieniu ab, loglevel debug - w access nic specjalnego nie ma:

root@user:/var/log/apache2# cat error.log
[sat Nov 03 20:22:17 2012] [info] Init: Seeding PRNG with 648 bytes of entropy
[sat Nov 03 20:22:17 2012] [info] Init: Generating temporary RSA private keys (512/1024 bits)
[sat Nov 03 20:22:17 2012] [info] Init: Generating temporary DH parameters (512/1024 bits)
[sat Nov 03 20:22:17 2012] [info] Init: Initializing (virtual) servers for SSL
[sat Nov 03 20:22:17 2012] [info] mod_ssl/2.2.16 compiled against Server: Apache/2.2.16, Library: OpenSSL/0.9.8o
[sat Nov 03 20:22:17 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[sat Nov 03 20:22:17 2012] [info] Init: Seeding PRNG with 648 bytes of entropy
[sat Nov 03 20:22:17 2012] [info] Init: Generating temporary RSA private keys (512/1024 bits)
[sat Nov 03 20:22:17 2012] [info] mod_fcgid: Process manager 1190 started
[sat Nov 03 20:22:17 2012] [info] Init: Generating temporary DH parameters (512/1024 bits)
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(253): shmcb_init allocated 512000 bytes of shared memory	
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(272): for 511952 bytes (512000 including header), recommending 32 subcaches, 133 indexes each
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(306): shmcb_init_memory choices follow
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(308): subcache_num = 32
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(310): subcache_size = 15996
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(312): subcache_data_offset = 2144
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(314): subcache_data_size = 13852
[sat Nov 03 20:22:17 2012] [debug] ssl_scache_shmcb.c(316): index_num = 133
[sat Nov 03 20:22:17 2012] [info] Shared memory session cache initialised
[sat Nov 03 20:22:17 2012] [info] Init: Initializing (virtual) servers for SSL
[sat Nov 03 20:22:17 2012] [info] mod_ssl/2.2.16 compiled against Server: Apache/2.2.16, Library: OpenSSL/0.9.8o
[sat Nov 03 20:22:17 2012] [notice] Apache/2.2.16 (Debian) mod_fcgid/2.3.6 mod_ssl/2.2.16 OpenSSL/0.9.8o configured -- resuming normal operations
[sat Nov 03 20:22:17 2012] [info] Server built: Sep  9 2012 21:17:33
[sat Nov 03 20:22:17 2012] [debug] prefork.c(1013): AcceptMutex: sysvsem (default: sysvsem)
[sat Nov 03 20:22:27 2012] [info] mod_fcgid: server 69.202.230.62:/var/www/php/user/php5(1199) started
[sat Nov 03 20:22:28 2012] [info] mod_fcgid: server 69.202.230.62:/var/www/php/user/php5(1202) started

 

configi:

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
ServerTokens Prod
ServerSignature Off
TraceEnable Off
HostnameLookups Off
LogLevel debug
<IfModule mpm_prefork_module>
StartServers		  3
MinSpareServers	   3
MaxSpareServers	  10
MaxClients		  256
MaxRequestsPerChild   0
</IfModule>

<IfModule mod_fcgid.c>
	FcgidConnectTimeout 30
	FcgidMaxRequestLen 11485760
	PHP_Fix_Pathinfo_Enable 1
	FcgidMaxRequestsPerProcess 500
	FcgidMaxProcessesPerClass 200
</IfModule>

# wrapper php
#!/bin/bash
PHP_FCGI_CHILDREN=0
export PHP_FCGI_CHILDREN
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/bin/php5-cgi -c /var/www/php/user/php.ini

 

Dodam ze nie ma roznicy czy prefork czy worker, zmiana parametrow MPMow tez nic nie daje, z kolei jak odpale to samo pod mod_php to nawet nie ma co porownywac.

 

Teraz pod tym konfigiem, taki wynik:

Server Software:		Apache
Server Port:			80
Document Path:		  /test.php
Document Length:		625 bytes
Concurrency Level:	  10
Time taken for tests:   1.069 seconds
Complete requests:	  100
Failed requests:		12
  (Connect: 0, Receive: 0, Length: 12, Exceptions: 0)
Write errors:		   0
Total transferred:	  74086 bytes
HTML transferred:	   62486 bytes
Requests per second:	93.53 [#/sec] (mean)
Time per request:	   106.923 [ms] (mean)
Time per request:	   10.692 [ms] (mean, across all concurrent requests)
Transfer rate:		  67.67 [Kbytes/sec] received
Connection Times (ms)
		  min  mean[+/-sd] median   max
Connect:		0	0   0.4	  0	   2
Processing:	 1   64 248.9	  1	1068
Waiting:		1   61 239.6	  1	1019
Total:		  1   64 249.1	  1	1069
Percentage of the requests served within a certain time (ms)
 50%	  1
 66%	  1
 75%	  1
 80%	  1
 90%	  3
 95%   1004
 98%   1066
 99%   1069
100%   1069 (longest request)

 

a skrypt jaki przepalam:

<?
	echo "some php stuff" . "<br>";
	for ($i = 1; $i <= 100; $i++) {
			 echo $i . "<br>";
	}
	echo microtime(true);
?>

 

Czasem, dzieje sie tak ze ten config dziala, ale np po dwoch razach ab juz zdycha i jest ~100 r/s z kolei mod_php moglby leciec z ab w petli cala noc i caly czas trzymie przeszlo 3000 r/s.

Dzieki za zainteresownie.

 

to wina tych sekundowych opoznien przy odpalaniu nowych procesow,

 

sproboj wersje z svn powinno byc znacznie lepiej, o ile nie przekroczysz limitu procesow

 

http://svn.apache.org/repos/asf/httpd/mod_fcgid/trunk

 

potrzebujesz apache2-threaded-dev albo apache2-prefork-dev

 

potem

APXS=/usr/bin/apxs2 ./configure.apxs

 

make

make install

 

--

Lazy

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

No miales racje, faktycznie w changelog'u jest o tym wspomniane, bug.

Paczka tak nowa ze jednak tylko z svn poki co.

 

Custom build 2.3.8 daje rade.

 

Dzieki za zainteresowanie.

Edytowano przez maress (zobacz historię edycji)

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ę

Zaloguj się, aby obserwować  

×