Since our last upgrade to Solaris 10U8 on a Sun Fire X4200(2 cores, 8GB
memory) and Sun Fire X4450 (16 cores, 36GB memory), we notice
a serious apache performance drop.
Especially when you disable the keepalive directive, web pages seems to
hang for a moment before completing.
The following tests show that it might be related to the combination of
Solaris 10 U 8, Apache APR
and the Intel e1000g Gigabit Ethernet Adapter.
When we inject an extra layer based on NCA into the network stack, the
problem is gone.
These are the results of benchmark tests with the apache benchmark tool
'ab'.
In every case the ab tool requests a static html page of 33K and a
dynamic PHP page.
Tests were done both with Apache 2.2.14 and Sun JWS 7.
The tables shows 'request per second'.
Testcase 1: Solaris 10U8, ab on localhost (no HTTP requests through the
intel NIC)
----------------------------------------------------------------------------------
apache,html: 0.3ms
apache,php: 2.8ms
SunJWS,html: 3ms
SunJWS,php: 11ms
*On localhost: no problem*
Testcase 2: Solaris 10U8, ab from a client PC in a LAN (100Mb connection)
------------------------------------------------------------------------------
Apache,no keepalive,html 2200ms !
,no keepalive,php 3600ms !
,keepalive,html 4ms
,keepalive,php 650ms !
SunJWS,no keepalive,html 8ms
,no keepalive,php 13ms
,keepalive,html 4ms
*Obviously Apache has a problem with traffic flowing through the NIC.*
Testcase 3: Solaris 10U6, ab from a client PC in a LAN (100Mb connection)
------------------------------------------------------------------------------
Apache,no keepalive,html 10ms
,no keepalive,php 20ms
*Solaris 10U6 on the same server: no problem*
We also did tests with other projects based on the Apache APR and they all have
the same problem.
*So it looks like there is a problem with Solaris 10U8, Apache APR and the
intel NIC card.
*
Testcase 4: Solaris 10U8, NCA enabled, ab from a client PC in a LAN (100Mb
connection)
--------------------------------------------------------------------------------------
The Apache webserver does not make use of NCA caching, we just add the extra
NCA layer
in the network stack.
Apache,no keepalive,html 10ms
,no keepalive,php 20ms
,keepalive,html 6ms
,keepalive,php 19ms
SunJWS,no keepalive,html 10ms
,no keepalive,php 13ms
,keepalive,html 3ms
,keepalive,php 12ms
*So by adding an extra layer (NCA) in the network stack the problem is solved !*
Anybody with the same problem ? Maybe on another platform ?
All suggestions are welcome.
Regards,
Luc