Bug #1517
one second delay after stat() / Linux epoll / lighttpd-r2025
| Status: | Fixed | Start: | ||
| Priority: | Normal | Due date: | ||
| Assigned to: | jan | % Done: | 100% |
|
| Category: | core | |||
| Target version: | 1.5.0 | |||
| Pending: | No |
Resolution: | ||
| Patch available: | Yes |
Description
Most of the time, there is one second delay between stat() is called and
some action is visible to client (e.g. 404 error written).
Attached strace files:
slow-with-stat_cache.txt:
server.stat-cache-engine = "simple"
server.max-stat-threads = 32
slow-no-stat_cache.txt:
no stat-cache.
Both have:
server.event-handler = "linux-sysepoll"
Associated revisions
Use pipe-io instead of SIGUSR1 to wakeup main thread (fixes #1517)
History
03/01/2008 11:19 PM - Safari
If I make N (N > 1) requests in parallel, the (N - 1) first work OK, but the last one is delayed by one second. Some queue management bug? Debug prints for queues are non-existent, queue loop is pretty complex... someone want to help me with this?
03/02/2008 01:48 AM - Safari
Found the bug. SIGUSR1 hack is not working as hoped: epoll_wait is not always interrupted with EINTR. I nuked SIGUSR1 and replaced with reading/writing a pipe.
There may be other ways to solve this problem, too.
You are welcome.
03/16/2008 01:10 PM - Safari
This patch also fixes the performance problem with gthread-aio.
I get now 180 MB/s instead of < 1 MB/s.
See #1186
10/10/2008 04:40 AM - peto
This issue still exists in r2294, and also makes AIO unusable in FBSD. This patch works (with a couple obvious lines added to base.h that were missing). Please apply this before the final 1.5 release; AIO is the biggest 1.5 feature and this is a critical fix.