You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@thrift.apache.org by Erik Karlsson <er...@iki.fi> on 2015/11/16 10:10:46 UTC

Thrift-deserialization performance issue with newer nodes

Hi,

I'm sorry if this has been discussed on the mailing list earlier. Tried to
find any discussion around this but couldn't find. This may be an issue
with the newer node.js but would like to ask if anybody else have
experienced similar cases.


I have been using thrift to transport data between servers. One of the
server that I'm using is done in javascript and running on top of node.js
(0.10.39 series). The problems started when I tried to update the server to
newer ones. Deserialising messages passed to node.js server started to take
10x more time than before.

We are passing quite complex objects (structs with list of structs etc.).
I tried to simplify the issue as much as possible. If creating a method
like this:

service TestApi {
    list<map<string, string>> findThingsById(1: i64 avatarId)
}

(no structs etc.)

The issue is present. When passing list of 2000 objects with around 8 keys
each the performance drop is very visible compared with node 10.39 and node
0.12.2.

With rudimentary profiling the most time is spent reading the actual
message and constructing the corresponding javascript native object.


I'm using SSL connection between the servers.

Have anybody else had similar type of issues? Or any ideas what to do with
the case.
Thanks beforehand.


BR,
- Erik

Re: Thrift-deserialization performance issue with newer nodes

Posted by Erik Karlsson <er...@iki.fi>.
Hi,

I will do it. Will provide a small server and client.

- Erik

On Wed, Nov 18, 2015 at 1:11 AM, Jens Geyer <je...@hotmail.com> wrote:

> Hi Erik,
>
> something reproducible is always a good thing to have.
> Could you put together some isolated test case and file a JIRA ticket?
>
> That would be awesome.
>
> Have fun,
> JensG
>
>
> -----Ursprüngliche Nachricht----- From: Erik Karlsson
> Sent: Monday, November 16, 2015 10:10 AM
> To: user@thrift.apache.org
> Subject: Thrift-deserialization performance issue with newer nodes
>
>
> Hi,
>
> I'm sorry if this has been discussed on the mailing list earlier. Tried to
> find any discussion around this but couldn't find. This may be an issue
> with the newer node.js but would like to ask if anybody else have
> experienced similar cases.
>
>
> I have been using thrift to transport data between servers. One of the
> server that I'm using is done in javascript and running on top of node.js
> (0.10.39 series). The problems started when I tried to update the server to
> newer ones. Deserialising messages passed to node.js server started to take
> 10x more time than before.
>
> We are passing quite complex objects (structs with list of structs etc.).
> I tried to simplify the issue as much as possible. If creating a method
> like this:
>
> service TestApi {
>    list<map<string, string>> findThingsById(1: i64 avatarId)
> }
>
> (no structs etc.)
>
> The issue is present. When passing list of 2000 objects with around 8 keys
> each the performance drop is very visible compared with node 10.39 and node
> 0.12.2.
>
> With rudimentary profiling the most time is spent reading the actual
> message and constructing the corresponding javascript native object.
>
>
> I'm using SSL connection between the servers.
>
> Have anybody else had similar type of issues? Or any ideas what to do with
> the case.
> Thanks beforehand.
>
>
> BR,
> - Erik
>



-- 
Erik Karlsson
erik.karlsson@iki.fi
+358 50 486 9050

Re: Thrift-deserialization performance issue with newer nodes

Posted by Jens Geyer <je...@hotmail.com>.
Hi Erik,

something reproducible is always a good thing to have.
Could you put together some isolated test case and file a JIRA ticket?

That would be awesome.

Have fun,
JensG


-----Ursprüngliche Nachricht----- 
From: Erik Karlsson
Sent: Monday, November 16, 2015 10:10 AM
To: user@thrift.apache.org
Subject: Thrift-deserialization performance issue with newer nodes

Hi,

I'm sorry if this has been discussed on the mailing list earlier. Tried to
find any discussion around this but couldn't find. This may be an issue
with the newer node.js but would like to ask if anybody else have
experienced similar cases.


I have been using thrift to transport data between servers. One of the
server that I'm using is done in javascript and running on top of node.js
(0.10.39 series). The problems started when I tried to update the server to
newer ones. Deserialising messages passed to node.js server started to take
10x more time than before.

We are passing quite complex objects (structs with list of structs etc.).
I tried to simplify the issue as much as possible. If creating a method
like this:

service TestApi {
    list<map<string, string>> findThingsById(1: i64 avatarId)
}

(no structs etc.)

The issue is present. When passing list of 2000 objects with around 8 keys
each the performance drop is very visible compared with node 10.39 and node
0.12.2.

With rudimentary profiling the most time is spent reading the actual
message and constructing the corresponding javascript native object.


I'm using SSL connection between the servers.

Have anybody else had similar type of issues? Or any ideas what to do with
the case.
Thanks beforehand.


BR,
- Erik