Hi Thanks for the reply. I have a test env with 3 identical servers( 8 core cpu and 32GB memory), one for wrk, one for nginx, and one for haproxy. The network looks like wrk => haproxy => nginx. I have tuned OS settings like open file limits, etc. And the test html file is default nginx index.html. There's no error when testing wrk => nginx, wrk => haproxy(no filter) => nginx. Error began to appear if I add filter. I've thought of performance affected by compression, but that's not true, because the request header sent by wrk does not accept compression. I've even change the following code: static inttrace_attach(struct stream *s, struct filter *filter){ struct trace_config *conf = FLT_CONF(filter); return 0; // ignore this filter to avoid performance down since there are many print And test with filter trace This way I think there will be no performance affect, since the filter is ignored in the very beginning. But still there are read errors. Please let me know if you need more information. Thanks,
----- Original Message ----- From: Aleksandar Lazic <al-hapr...@none.at> To: flamese...@yahoo.co.jp; "haproxy@formilux.org" <haproxy@formilux.org> Date: 2018/12/7, Fri 22:12 Subject: Re: Simply adding a filter causes read error Hi. Am 07.12.2018 um 08:37 schrieb flamese...@yahoo.co.jp: > Hi > > I tested more, and found that even with option http-pretend-keepalive enabled, > > if I increase the test duration , the read error still appear. Please can you show us some logs when the error appears. Can you also tell us some data about the Server on which haproxy, wrk and nginx is running and how the network setup looks like. maybe you reach some system limits as Compression requires some more os/hw resources. Regards Aleks > Running 3m test @ http://10.0.3.15:8000 > 10 threads and 1000 connections > Thread Stats Avg Stdev Max +/- Stdev > Latency 19.84ms 56.36ms 1.34s 92.83% > Req/Sec 23.11k 2.55k 50.64k 87.10% > 45986426 requests in 3.33m, 36.40GB read > Socket errors: connect 0, read 7046, write 0, timeout 0 > Requests/sec: 229817.63 > Transfer/sec: 186.30MB > > thanks > > ----- Original Message ----- > *From:* "flamese...@yahoo.co.jp" <flamese...@yahoo.co.jp> > *To:* Aleksandar Lazic <al-hapr...@none.at>; "haproxy@formilux.org" > <haproxy@formilux.org> > *Date:* 2018/12/7, Fri 09:06 > *Subject:* Re: Simply adding a filter causes read error > > Hi, > > Thanks for the reply, I thought the mail format is corrupted.. > > I tried option http-pretend-keepalive, seems read error is gone, but >timeout > error raised(maybe its because the 1000 connections of wrk) > > Thanks > > ----- Original Message ----- > *From:* Aleksandar Lazic <al-hapr...@none.at> > *To:* flamese...@yahoo.co.jp; "haproxy@formilux.org" ><haproxy@formilux.org> > *Date:* 2018/12/6, Thu 23:53 > *Subject:* Re: Simply adding a filter causes read error > > Hi. > > Am 06.12.2018 um 15:20 schrieb flamese...@yahoo.co.jp > <mailto:flamese...@yahoo.co.jp>: > > Hi, > > > > I have a haproxy(v1.8.14) in front of several nginx backends, > everything works > > fine until I add compression in haproxy. > > There is a similar thread about this topic. > > https://www.mail-archive.com/haproxy@formilux.org/msg31897.html > > Can you try to add this option in your config and see if the problem is > gone. > > option http-pretend-keepalive > > Regards > Aleks > > > My config looks like this: > > > > ### Config start ##### > > global > > maxconn 1000000 > > daemon > > nbproc 2 > > > > defaults > > retries 3 > > option redispatch > > timeout client 60s > > timeout connect 60s > > timeout server 60s > > timeout http-request 60s > > timeout http-keep-alive 60s > > > > frontend web > > bind *:8000 > > > > mode http > > default_backend app > > backend app > > mode http > > #filter compression > > #filter trace > > server nginx01 10.0.3.15:8080 > > ### Config end ##### > > > > > > Lua script used in wrk: > > a.lua: > > > > local count = 0 > > > > request = function() > > local url = "/?count=" .. count > > count = count + 1 > > return wrk.format( > > 'GET', > > url > > ) > > end > > > > > > 01. wrk test against nginx: everything if OK > > > > wrk -c 1000 -s a.lua http://10.0.3.15:8080 <http://10.0.3.15:8080/ > > > Running 10s test @ http://10.0.3.15:8080 <http://10.0.3.15:8080/ > > > 2 threads and 1000 connections > > Thread Stats Avg Stdev Max +/- Stdev > > Latency 34.83ms 17.50ms 260.52ms 76.48% > > Req/Sec 12.85k 2.12k 17.20k 62.63% > > 255603 requests in 10.03s, 1.23GB read > > Requests/sec: 25476.45 > > Transfer/sec: 125.49MB > > > > > > 02. Wrk test against haproxy, no filters: everything is OK > > > > wrk -c 1000 -s a.lua http://10.0.3.15:8000 <http://10.0.3.15:8000/ > > > Running 10s test @ http://10.0.3.15:8000 <http://10.0.3.15:8000/ > > > 2 threads and 1000 connections > > Thread Stats Avg Stdev Max +/- Stdev > > Latency 73.58ms 109.48ms 1.33s 97.39% > > Req/Sec 7.83k 1.42k 11.95k 66.15% > > 155843 requests in 10.07s, 764.07MB read > > Requests/sec: 15476.31 > > Transfer/sec: 75.88MB > > > > 03. Wrk test against haproxy, add filter compression: read error > > > > Change > > > > #filter compression > > ===> > > filter compression > > > > wrk -c 1000 -s a.lua http://10.0.3.15:8000 <http://10.0.3.15:8000/ > > > Running 10s test @ http://10.0.3.15:8000 <http://10.0.3.15:8000/ > > > 2 threads and 1000 connections > > Thread Stats Avg Stdev Max +/- Stdev > > Latency 60.43ms 42.63ms 1.06s 91.54% > > Req/Sec 7.86k 1.40k 10.65k 67.54% > > 157025 requests in 10.11s, 769.87MB read > > Socket errors: connect 0, read 20, write 0, timeout 0 > > Requests/sec: 15530.67 > > Transfer/sec: 76.14MB > > > > 04. Wrk test against haproxy, add filter trace, and update >flt_trace.c: > > > > static int > > trace_attach(struct stream *s, struct filter *filter) > > { > > struct trace_config *conf = FLT_CONF(filter); > > // add below > > // ignore this filter to avoid performance down since there >are > many print > > return 0; > > > > And change > > #filter compression > > #filter trace > > ===> > > #filter compression > > filter trace > > > > Running 10s test @ http://10.0.3.15:8000 <http://10.0.3.15:8000/ > > > 2 threads and 1000 connections > > Thread Stats Avg Stdev Max +/- Stdev > > Latency 64.88ms 77.91ms 1.09s 98.26% > > Req/Sec 7.84k 1.47k 11.57k 67.71% > > 155800 requests in 10.05s, 763.86MB read > > Socket errors: connect 0, read 21, write 0, timeout 0 > > Requests/sec: 15509.93 > > Transfer/sec: 76.04MB > > > > > > Is there any config error? Am I doing something wrong? > > > > Thanks > > > > > > > p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'}p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'; min-height: 14.0px}