It is quite hard to judge since i think it is an apple-to-orange comparision.
but if you are accessing a local redis, then luasocket should be ok.

Thanks.

On Thu, Dec 22, 2016 at 10:18 AM, Di Li <di...@apple.com> wrote:
> 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