php max memory limit= 64, 128, 256,512
starts: 32MB old dats, 64 still may not 128 seems, timed out
in wordpress accessing sitemap with 1000+ urs
Let’s say it’s now 256MB maximum per process.
average memory usage by each php fpm process
50MB.
The problem:
idle process also takes memory .
2nd problem: php fpm idle process can take max memory
upto 256MB.
3rd: a slight higher memory than each prescribed memory limit
Example: 271 MB.
Mostly used php fpm configuration pool
dynamic (php fpm dynamic vs static vs on demand)
How many php child process need for 1000 concurrent connections?
each connection handles by each process just like apache, to overcome this situation nginx introduced
It’s a uses connection pool non blocking threads.
single nginx process can handle 1024 connections with less memory.
So there is no connection pool in PHP, later introduced in MySQL 8.
Persistent connection to MySQL,
keep alive to nginx (improves some performance grade)
Request vs connection
1st connection established, (measured on concurrent connections or concurrency)
Then request processes measured in req/s
Keep alive or connection closing time also impacts.
simple calculation
1000 concurrent connections = 1000 active processes
each process memory average 50MB (may also 3-4MB) check php fpm status page memory available in bytes
50*1000 = 50GB average
maximum limit: 256MB*1000= 256GB RAM
cpu cores minimum 128 cores (1core for 2gb ram to smooth operation old formula).
it’s theoretical formula.
Google analytics live visitors average
250
nginx active connections including keepalive
writing 2
waiting : 300
total: 302 (250+ from browser, 2 connections to php fpm)
90% static content (the key)
does each and every php fpm connection has to pass MySQL database
??
opcode cache impact…
average 100MB per each connection in a managed MySQL database service.
it’s better to keep MySQL server separate in high load servers.
(database has high impact on performance).
Connection limit controls by Linux file descriptors limit.