Sincerely apology on this.

The bottleneck is on the webdis, which is a http front end of redis, since 
ts.fetch only support http request, and pretty redis doesn’t support http 
protocol

I changed the fetch url to something else, which is back to 12000 req/s.And I 
did check the internal request, otherwise nothing comes back.

so far, I still have better results with luasocket -> unix domain socket 
(19K/s) than the ts.fetch with http calls (12K/s ).

Based on my knowledge on this, the ts.fetch is non-blocking and luasocket is 
blocking, should I still go with ts.fetch even it has worse restul ?


Thanks,
Di Li




> On Dec 22, 2016, at 10:00 AM, Shu Kit Chan <chanshu...@gmail.com> wrote:
> 
> One thing I can think of is that you may be calling ts.fetch()
> unconditionally. We need to check if it is an internal request first.
> If it is, it is likely done to the ts.fetch() and therefore we should
> not do a ts.fetch() for an incoming internal request.
> 
> Otherwise it will result in a recursive situation and severely affect
> performance.
> 
> But if you have taken care of that already, pls share your script with
> you so I can take a closer look.
> 
> Thanks.
> 
> On Thu, Dec 22, 2016 at 9:48 AM, Shu Kit Chan <chanshu...@gmail.com> wrote:
>> Can you share your lua script in full with me?
>> 
>> Thanks.
>> 
>> Kit
>> 
>> On Thu, Dec 22, 2016 at 1:30 AM, Di Li <di...@apple.com> wrote:
>>> Hey Guys,
>>> 
>>> Running 6.2.0 with cherry pick of TS-4497 to make the ts.fetch work, 
>>> otherwise it won’t even function.
>>> 
>>> The performance came back with very terrible results, not sure the issue is 
>>> on the keep alive has been disabled for internal request or the ts.fetch 
>>> lock on itself
>>> 
>>> I have running the ts.fetch or luasocket with a service on 127.0.0.1, so 
>>> not really remote request
>>> 
>>> 
>>> without ts.fetch, I have 45156 req/s
>>> 
>>> [root@Di-Dev wrk]# ./wrk -c 50 -t 20 -d 10 -s ./scripts/via_proxy_get1.lua 
>>> http://10.12.17.57:8080
>>> Running 10s test @ http://10.12.17.57:8080
>>>  20 threads and 50 connections
>>>  Thread Stats   Avg      Stdev     Max   +/- Stdev
>>>    Latency     1.16ms    3.55ms  87.34ms   99.06%
>>>    Req/Sec     2.27k   596.33     3.49k    67.84%
>>>  456054 requests in 10.10s, 374.47MB read
>>> Requests/sec:  45156.39
>>> Transfer/sec:     37.08MB
>>> 
>>> 
>>> with ts.fetch, I have roughly 80 req/s, simply add following into any hook 
>>> call back function
>>> 
>>> local res = ts.fetch('http://127.0.0.1/ping', {method = 'GET’}) and no 
>>> process any data from the res, purely just call it.
>>> 
>>> 
>>> 
>>> [root@Di-Dev wrk]# ./wrk -c 50 -t 20 -d 10 -s ./scripts/via_proxy_get1.lua 
>>> http://10.12.17.57:8080
>>> Running 10s test @ http://10.12.17.57:8080
>>>  20 threads and 50 connections
>>>  Thread Stats   Avg      Stdev     Max   +/- Stdev
>>>    Latency   547.01ms   98.71ms   1.12s    84.97%
>>>    Req/Sec     4.46      3.06    20.00     77.60%
>>>  712 requests in 10.02s, 598.66KB read
>>> Requests/sec:     71.07
>>> Transfer/sec:     59.76KB
>>> 
>>> 
>>> 
>>> with luasocket, I have roughly 19000 req/s, still a huge drop on 
>>> performance, that’s the reason we tried the ts.fetch, but come back with 
>>> way much worse results.
>>> 
>>> 
>>> 
>>> Thanks,
>>> Di Li
>>> 
>>> 
>>> 
>>> 
>>> 

Reply via email to