- PHP-FPM pool configuration: pm.max_children, pm.max_requests, pm.min/max_spare_servers
- Nginx worker_processes, worker_connections, and keepalive_timeout tuning
- MySQL InnoDB buffer pool sizing and query cache configuration
- PostgreSQL shared_buffers, work_mem, and checkpoint tuning
- Slow query analysis with pt-query-digest and pgBadger
- Missing index identification and creation recommendations
- Connection pooling: PgBouncer for PostgreSQL, ProxySQL for MySQL
- OPcache configuration for PHP applications
- Node.js cluster mode and memory limit optimisation
- Application profiling and flame graph analysis for runtime bottlenecks
Performance
Optimization
Database, application and server-level performance optimisation.
Server-level optimisation targets the components that execute when a cache miss occurs: the web server, application runtime, and database. These components have default configurations designed for broad compatibility, not peak performance. Hellenic Technologies profiles each application under realistic load, identifies the actual bottleneck, and applies targeted tuning — not a generic list of performance tips that may not apply.
PHP-FPM pool configuration is the most impactful tuning for PHP applications. The number of worker processes determines how many concurrent PHP requests the server can handle simultaneously. Too few workers causes request queueing; too many causes memory exhaustion. We calculate the correct pm.max_children value based on available RAM and average PHP memory usage, configure pm.max_requests to prevent PHP memory leaks from accumulating, and tune pm.max_spare_servers for responsive scaling under variable load.
MySQL and PostgreSQL query optimisation begins with slow query logs. We enable slow query logging with a 1-second threshold, analyse the logs with pt-query-digest or pgBadger, and prioritise the queries with the highest total execution time. For MySQL, the InnoDB buffer pool should be sized to hold the working set of data in memory — typically 70-80% of available RAM on dedicated database servers. For PostgreSQL, shared_buffers, work_mem, and effective_cache_size are tuned based on dataset size and query patterns.
Server optimisation services:
