Hi,
I'm working on a Symfony project for the past 11 months. The project
is basically to throw away the old FrontEnd of a well-known shopping
comparator, written in java and to replace it with a brand new
frontend written in PHP with a Service Oriented Architecture (SOA).
Our high-level architecture is to have a light-weighted frontend in
PHP (using Symfony 1.4) and a WebService Aggregator written in Java
(Jersey framework) to ensure all call to underlined webservices are
done in parallal. This aggregator is extremly performant : it handles
more than 200 Queries Per Second (QPS).
Our main issue is more about the PHP frontend. Despite all our
efforts, we can't handle more than 15 QPS on each server. Just to give
you an idea, here are a few key informations about our achitecture :
* 6 Servers with 4 physical cores (8 with HyperThreading enabled)
and 24GB of RAM
* Using Symfony 1.4.1 with PHP 5.2.10
* No database access : all datas are fetched using WebServices
* Centos 5.4 Final 64 bits
* Apache 2.2.3
* APC cache enabled
* using SimpleXml to read XML feeds (300 nodes tops) coming from
our WebServices
* using mod_php
* PHP memory limit is set to 128M in our production servers (we
noticed lots of performances issues with only 32M or even 64M)
Our FrontEnd does not handle complex algorithm. Basically, it get its
data from some High Performances webservices (all internal), read the
request, render the page and log some usefull data (access logs using
Apache and some custom logs for our business). Everything is monitored
closely and the bottleneck seems to come from CPU usage which reach
100% pretty often.
We tried a few things :
* Using Apache FastCGI (quite complicated on Centos5.4 since we
have to re-compile it) : slight increase but is not worth all the
trouble it causes on our company architecture. Nevertheless, it seems
that we did some configuration mistakes and we need to bench it again.
* Caching a few modules : header, footer, ads, ...
* Replacing Apache by NGix : no change at all
For the moment, our average server time exceed 1 second which is
really bad compared to our old Java-based website (300-400 ms) and we
didn't have rollouted all supported pages or even all our countries
(we expect to double the number of connection by activating all
remaining countries).
Do you have any idea on how we could increase our performances ? Do we
need to directly contact SensioLabs to negociate some contractor time
(maybe a Symfony Guru ?) ?
Do you know some tools that can help us to profile our application in
production environment ? We've already tried XDebug on developer
workstations but we don't have the same exact behavior in production.
What I'd like to test is to (manually) instrumentate our source code
to add some timers around some potentially costly algorithms. So you
know any tool that could help us to do that ?
I already have created a topic on Symfony forum :
http://forum.symfony-project.org/viewtopic.php?f=3&t=30853&p=108430#p108430
Thanks.
--
If you want to report a vulnerability issue on symfony, please send it to
security at symfony-project.com
You received this message because you are subscribed to the Google
Groups "symfony users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en