Nginx worker processors D state and high I/O utilization !!
igor.sverkos at googlemail.com
Tue Jul 16 08:41:39 UTC 2013
can you tell use the HDD modell you are currently using? And are you
using real dedicated servers or some kind of virtualization?
Current SATA disks (Seagate ST1000DM-003 for example) are able to
provide an avg speed of 190MB/s (keep in mind: It's their avg speed.
So when the disk is full, the speed will drop).
When you reach the disk limit, you would add more spindles (e.g. add
more disks). Do your own math. Calculate how many IOPS one user needs
(if you cannot calculate IOPS, just calculate in MB/s for the
beginning). For example:
Your videos have an avg bit rate of ~8000kbit/s (HD videos).
To serve one stream, you would need at least 1 MB/s disk speed.
So using a disk with avg speed of ~120 MB/s will allow you to serve
~100 concurrent requests (we keep a 20% buffer, to be sure). Keep in
mind that in this example, the disk is dedicated to serve your videos
only. If you run your web, mail and streaming server on the same
BTW: Serving ~100 concurrent HD streams would utilize one 1 Gbit uplink.
Now, doubling the spindles (=add one more disk, RAID 0) would allow
you to serve 200 concurrent requests (you want to go with RAID 10, to
Doing the calculation in MB/s is not as accurate as doing the
calculation in IOPS, but it's better than nothing.
Yes, you should buy real SAS server disks. Don't ever use green SATA
disks in servers :)
But when your current disks only provide 30MB/s make sure if it is
their limit or if there is another problem (for example the alignment
problem Sergey mentioned). That's why I ask you for the modell in the
More information about the nginx