Mercurial > hg > nginx-quic
annotate auto/configure @ 7281:bd6563e81cea
Limit req: improved handling of negative times.
Negative times can appear since workers only update time on an event
loop iteration start. If a worker was blocked for a long time during
an event loop iteration, it is possible that another worker already
updated the time stored in the node. As such, time since last update
of the node (ms) will be negative.
Previous code used ngx_abs(ms) in the calculations. That is, negative
times were effectively treated as positive ones. As a result, it was
not possible to maintain high request rates, where the same node can be
updated multiple times from during an event loop iteration.
In particular, this affected setups with many SSL handshakes, see
http://mailman.nginx.org/pipermail/nginx/2018-May/056291.html.
Fix is to only update the last update time stored in the node if the
new time is larger than previously stored one. If a future time is
stored in the node, we preserve this time as is.
To prevent breaking things on platforms without monotonic time available
if system time is updated backwards, a safety limit of 60 seconds is
used. If the time stored in the node is more than 60 seconds in the future,
we assume that the time was changed backwards and update lr->last
to the current time.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Wed, 30 May 2018 15:40:34 +0300 |
parents | 4a343228c55e |
children | f18db38a9826 |
rev | line source |
---|---|
275
b836469c37c3
nginx-0.0.2-2004-03-02-18:40:59 import
Igor Sysoev <igor@sysoev.ru>
parents:
266
diff
changeset
|
1 #!/bin/sh |
192
31824be1fc66
nginx-0.0.1-2003-11-20-10:05:50 import; auto/configure
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
2 |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
440
diff
changeset
|
3 # Copyright (C) Igor Sysoev |
4412 | 4 # Copyright (C) Nginx, Inc. |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
440
diff
changeset
|
5 |
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
440
diff
changeset
|
6 |
4761
3010db312c91
Made sure to run configure in a "C" locale.
Ruslan Ermilov <ru@nginx.com>
parents:
4412
diff
changeset
|
7 LC_ALL=C |
3010db312c91
Made sure to run configure in a "C" locale.
Ruslan Ermilov <ru@nginx.com>
parents:
4412
diff
changeset
|
8 export LC_ALL |
3010db312c91
Made sure to run configure in a "C" locale.
Ruslan Ermilov <ru@nginx.com>
parents:
4412
diff
changeset
|
9 |
195
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
10 . auto/options |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
11 . auto/init |
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
12 . auto/sources |
194
2357fa41738a
nginx-0.0.1-2003-11-21-09:30:49 import
Igor Sysoev <igor@sysoev.ru>
parents:
193
diff
changeset
|
13 |
6195
e69d5e9be292
Configure: create missing intermediates for build directory.
Piotr Sikora <piotr@cloudflare.com>
parents:
6018
diff
changeset
|
14 test -d $NGX_OBJS || mkdir -p $NGX_OBJS |
455 | 15 |
16 echo > $NGX_AUTO_HEADERS_H | |
467 | 17 echo > $NGX_AUTOCONF_ERR |
18 | |
945 | 19 echo "#define NGX_CONFIGURE \"$NGX_CONFIGURE\"" > $NGX_AUTO_CONFIG_H |
20 | |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
210
diff
changeset
|
21 |
469 | 22 if [ $NGX_DEBUG = YES ]; then |
285
8f48e6366d09
nginx-0.0.2-2004-03-11-18:42:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
275
diff
changeset
|
23 have=NGX_DEBUG . auto/have |
8f48e6366d09
nginx-0.0.2-2004-03-11-18:42:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
275
diff
changeset
|
24 fi |
8f48e6366d09
nginx-0.0.2-2004-03-11-18:42:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
275
diff
changeset
|
25 |
8f48e6366d09
nginx-0.0.2-2004-03-11-18:42:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
275
diff
changeset
|
26 |
563 | 27 if test -z "$NGX_PLATFORM"; then |
28 echo "checking for OS" | |
29 | |
30 NGX_SYSTEM=`uname -s 2>/dev/null` | |
31 NGX_RELEASE=`uname -r 2>/dev/null` | |
32 NGX_MACHINE=`uname -m 2>/dev/null` | |
33 | |
34 echo " + $NGX_SYSTEM $NGX_RELEASE $NGX_MACHINE" | |
35 | |
36 NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE"; | |
37 | |
2828
f5c80c69a72e
backout -r2827 and add correct fix
Igor Sysoev <igor@sysoev.ru>
parents:
2758
diff
changeset
|
38 case "$NGX_SYSTEM" in |
7030
4a343228c55e
Configure: fix compilation on MSYS2 / MinGW64.
Orgad Shaneh <orgads@gmail.com>
parents:
6195
diff
changeset
|
39 MINGW32_* | MINGW64_* | MSYS_*) |
2828
f5c80c69a72e
backout -r2827 and add correct fix
Igor Sysoev <igor@sysoev.ru>
parents:
2758
diff
changeset
|
40 NGX_PLATFORM=win32 |
f5c80c69a72e
backout -r2827 and add correct fix
Igor Sysoev <igor@sysoev.ru>
parents:
2758
diff
changeset
|
41 ;; |
f5c80c69a72e
backout -r2827 and add correct fix
Igor Sysoev <igor@sysoev.ru>
parents:
2758
diff
changeset
|
42 esac |
f5c80c69a72e
backout -r2827 and add correct fix
Igor Sysoev <igor@sysoev.ru>
parents:
2758
diff
changeset
|
43 |
563 | 44 else |
45 echo "building for $NGX_PLATFORM" | |
946 | 46 NGX_SYSTEM=$NGX_PLATFORM |
563 | 47 fi |
48 | |
946 | 49 . auto/cc/conf |
563 | 50 |
469 | 51 if [ "$NGX_PLATFORM" != win32 ]; then |
253
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
248
diff
changeset
|
52 . auto/headers |
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
248
diff
changeset
|
53 fi |
b6793bc5034b
nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
248
diff
changeset
|
54 |
561 | 55 . auto/os/conf |
248
e885208c518b
nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents:
210
diff
changeset
|
56 |
469 | 57 if [ "$NGX_PLATFORM" != win32 ]; then |
3931
c8884c8f7c74
Support POSIX semaphores on Linux.
Igor Sysoev <igor@sysoev.ru>
parents:
3637
diff
changeset
|
58 . auto/unix |
266
5238e93961a1
nginx-0.0.2-2004-02-23-23:57:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
256
diff
changeset
|
59 fi |
5238e93961a1
nginx-0.0.2-2004-02-23-23:57:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
256
diff
changeset
|
60 |
6018
466bd63b63d1
Thread pools implementation.
Valentin Bartenev <vbart@nginx.com>
parents:
5701
diff
changeset
|
61 . auto/threads |
457 | 62 . auto/modules |
63 . auto/lib/conf | |
64 | |
2758 | 65 case ".$NGX_PREFIX" in |
66 .) | |
67 NGX_PREFIX=${NGX_PREFIX:-/usr/local/nginx} | |
68 have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define | |
69 ;; | |
194
2357fa41738a
nginx-0.0.1-2003-11-21-09:30:49 import
Igor Sysoev <igor@sysoev.ru>
parents:
193
diff
changeset
|
70 |
2758 | 71 .!) |
72 NGX_PREFIX= | |
73 ;; | |
74 | |
75 *) | |
76 have=NGX_PREFIX value="\"$NGX_PREFIX/\"" . auto/define | |
77 ;; | |
78 esac | |
79 | |
80 if [ ".$NGX_CONF_PREFIX" != "." ]; then | |
81 have=NGX_CONF_PREFIX value="\"$NGX_CONF_PREFIX/\"" . auto/define | |
195
8dee38ea9117
nginx-0.0.1-2003-11-25-23:44:56 import
Igor Sysoev <igor@sysoev.ru>
parents:
194
diff
changeset
|
82 fi |
210
00cafae0bdf1
nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
195
diff
changeset
|
83 |
469 | 84 have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define |
85 have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define | |
86 have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define | |
611 | 87 have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define |
2743
d8316f307b6a
issue start up errors and warning on both stderr and error_log
Igor Sysoev <igor@sysoev.ru>
parents:
1352
diff
changeset
|
88 have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define |
479 | 89 |
469 | 90 have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_LOG_PATH\"" . auto/define |
479 | 91 have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\"" |
92 . auto/define | |
93 have=NGX_HTTP_PROXY_TEMP_PATH value="\"$NGX_HTTP_PROXY_TEMP_PATH\"" | |
94 . auto/define | |
95 have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\"" | |
96 . auto/define | |
3549
0b3613117ac5
./configure --http-uwsgi-temp-path=PATH
Igor Sysoev <igor@sysoev.ru>
parents:
2828
diff
changeset
|
97 have=NGX_HTTP_UWSGI_TEMP_PATH value="\"$NGX_HTTP_UWSGI_TEMP_PATH\"" |
0b3613117ac5
./configure --http-uwsgi-temp-path=PATH
Igor Sysoev <igor@sysoev.ru>
parents:
2828
diff
changeset
|
98 . auto/define |
3637 | 99 have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\"" |
100 . auto/define | |
337
4feff829a849
nginx-0.0.3-2004-05-19-00:28:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
303
diff
changeset
|
101 |
2758 | 102 . auto/make |
103 . auto/lib/make | |
104 . auto/install | |
105 | |
106 # STUB | |
107 . auto/stubs | |
108 | |
455 | 109 have=NGX_USER value="\"$NGX_USER\"" . auto/define |
110 have=NGX_GROUP value="\"$NGX_GROUP\"" . auto/define | |
111 | |
5701
1209b8a7b077
Configure: the --build= option.
Ruslan Ermilov <ru@nginx.com>
parents:
4761
diff
changeset
|
112 if [ ".$NGX_BUILD" != "." ]; then |
1209b8a7b077
Configure: the --build= option.
Ruslan Ermilov <ru@nginx.com>
parents:
4761
diff
changeset
|
113 have=NGX_BUILD value="\"$NGX_BUILD\"" . auto/define |
1209b8a7b077
Configure: the --build= option.
Ruslan Ermilov <ru@nginx.com>
parents:
4761
diff
changeset
|
114 fi |
1209b8a7b077
Configure: the --build= option.
Ruslan Ermilov <ru@nginx.com>
parents:
4761
diff
changeset
|
115 |
210
00cafae0bdf1
nginx-0.0.1-2003-12-14-23:10:27 import
Igor Sysoev <igor@sysoev.ru>
parents:
195
diff
changeset
|
116 . auto/summary |