Welcome! Log In Create A New Profile

Advanced

Re: nginx introduces extra delay when talking to slow backend (probably FreeBSD kevent specific)

Dmitry Marakasov
October 12, 2018 04:42PM
* Dmitry Marakasov (amdmi3@amdmi3.ru) wrote:

I've gathered ktrace dumps for both cases, and it really looks that
the problem is related to kevent. After nginx sends response back
to client, it calls kevent(2) on client fd (which is 5).

When there is a bug (FreeBSD 11.2), the following happens:

49365 nginx 3.099362 CALL kevent(0x7,0x8022a2000,0,0x8023005c0,0x200,0x7fffffffe598)
49365 nginx 3.099419 STRU struct kevent[] = { }
49365 nginx 3.194695 STRU struct kevent[] = { { ident=5, filter=EVFILT_WRITE, flags=0x20<EV_CLEAR>, fflags=0, data=0xbf88, udata=0x8023633d1 } }
49365 nginx 3.194733 RET kevent 1
....
49365 nginx 3.194858 CALL kevent(0x7,0x8022a2000,0,0x8023005c0,0x200,0x7fffffffe598)
49365 nginx 3.194875 STRU struct kevent[] = { }
49365 nginx 3.835259 STRU struct kevent[] = { { ident=5, filter=EVFILT_READ, flags=0x8020<EV_CLEAR|EV_EOF>, fflags=0, data=0, udata=0x802346111 } }
49365 nginx 3.835299 RET kevent 1

E.g. read and write events come separately, both with huge delays.

On FreeBSD-CURRENT which doesn't experience the problem, kdump looks this way:

8049 nginx 3.081367 CALL kevent(0x7,0x8012d1b40,0,0x8012da040,0x200,0x7fffffffe598)
8049 nginx 3.081371 STRU struct kevent[] = { }
8049 nginx 3.081492 STRU struct kevent[] = { { ident=5, filter=EVFILT_WRITE, flags=0x20<EV_CLEAR>, fflags=0, data=0xbf88, udata=0x801341f11 }
{ ident=5, filter=EVFILT_READ, flags=0x8020<EV_CLEAR|EV_EOF>, fflags=0, data=0, udata=0x801324e51 } }
8049 nginx 3.081498 RET kevent 2

E.g. both events come immediately and at the same time.

Not sure if that's problem of kevent or something it relies on or the
way nginx uses it.

--
Dmitry Marakasov . 55B5 0596 FF1E 8D84 5F56 9510 D35A 80DD F9D2 F77D
amdmi3@amdmi3.ru ..: https://github.com/AMDmi3

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

nginx introduces extra delay when talking to slow backend (probably FreeBSD kevent specific)

Dmitry Marakasov October 12, 2018 04:00PM

Re: nginx introduces extra delay when talking to slow backend (probably FreeBSD kevent specific)

Dmitry Marakasov October 12, 2018 04:42PM

Re: nginx introduces extra delay when talking to slow backend (probably FreeBSD kevent specific)

Maxim Dounin October 14, 2018 02:42AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 143
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready