You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by 胡海麟 <h...@bulbit.jp> on 2018/07/04 08:33:08 UTC

Performance acting as a redis server

Hi,

We use ignite as a redis server.

The use case is
a. Write timeout is 15ms on the client side.
b. 2 server nodes. each is an EC2 r4.4xlarge instance.
c. Write req/s is about 120,000. In another word, 60,000 for each node.

The problem is that timeout happens frequently, several ones per second.
A lower write req/s results less timeout. I guest we have bottleneck somewhere.

==========
$ tail -f /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
| grep pool
    ^-- Public thread pool [active=0, idle=0, qSize=0]
    ^-- System thread pool [active=0, idle=16, qSize=0]
==========
system thread pool seems not busy at all.

==========
$ tail -f /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
| grep "CPU "
    ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
    ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
==========
CPU is not busy, either.

We expected milli second level performance and we have too many timeout now.
Any idea for optimizing the performance?

Thanks.

Re: Performance acting as a redis server

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

Since Java is a garbage-collected language, you can expect that there will
be some timeouts.

You should really be targeting 99th while having reasonably large timeout.

Regards,

-- 
Ilya Kasnacheev

2018-07-06 11:44 GMT+03:00 胡海麟 <h...@bulbit.jp>:

> Hi,
>
> Thank you for your advice.
>
> We are checking if we can modify the connection part of the client.
>
> Meanwhile, we still have timeout issue on ignite.
> Our write timeout setting is 20ms, but timeout happens several times 1
> minute.
> The workload is like "Atomic Put, Throughput 100 - 150 Ops/Sec".
>
> https://www.gridgain.com/resources/benchmarks/gridgain-benchmarks-results
> According the benchmark above, single digital ms per op is expected.
>
> Since we use golang redis client to communicate with ignite, does it
> mean a great overhead?
> Or any other client suggestion for golang?
>
> Thanks.
>
> On Fri, Jul 6, 2018 at 12:42 AM, Ilya Kasnacheev
> <il...@gmail.com> wrote:
> > Hello!
> >
> > I have no idea why your node has lost zookeeper connection, but my bet
> will
> > be that you still failed to close some of connections, and they have
> clogged
> > each and every available socket on your machine (which are still only
> 63k).
> >
> > Please make extra sure that when you open a socket, you close it
> regardless
> > of errors, etc.
> >
> > Regards,
> >
> > --
> > Ilya Kasnacheev
> >
> > 2018-07-05 13:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >>
> >> Hi,
> >>
> >> Challenged again and I'm back :)
> >>
> >> One of the node stopped for SEGMENTATION.
> >> The Zookeeper is used by other services, too. It is supposed working
> >> all the time.
> >>
> >> I'm not sure if raising session timeout of zookeeper work or not. Ask
> >> for suggestions.
> >>
> >> Thanks.
> >>
> >> On Thu, Jul 5, 2018 at 6:24 PM, Ilya Kasnacheev
> >> <il...@gmail.com> wrote:
> >> > Hello!
> >> >
> >> > The config looks correct. I'll check why ConnectorConfiguration
> doesn't
> >> > have
> >> > proper string representation, hence:
> >> > https://issues.apache.org/jira/browse/IGNITE-8935
> >> >
> >> > Regards,
> >> >
> >> > --
> >> > Ilya Kasnacheev
> >> >
> >> > 2018-07-05 9:21 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >>
> >> >> Hi,
> >> >>
> >> >> I added the config above. But I don't know whether it is applied.
> >> >>
> >> >>
> >> >>
> >> >> connectorCfg=org.apache.ignite.configuration.ConnectorConfiguration@
> 7d8704ef
> >> >>
> >> >> There is such a piece of relevant info but no detail. Is there any
> way
> >> >> to confirm the details?
> >> >>
> >> >> Thanks.
> >> >>
> >> >> On Wed, Jul 4, 2018 at 7:25 PM, Ilya Kasnacheev
> >> >> <il...@gmail.com> wrote:
> >> >> > Hello!
> >> >> >
> >> >> > You should add it to config/default-config.xml in the form of
> >> >> >
> >> >> >       <property name="connectorConfiguration">
> >> >> >         <bean
> >> >> > class="org.apache.ignite.configuration.ConnectorConfiguration">
> >> >> >           <property name="threadPoolSize" value="64"/>
> >> >> >         </bean>
> >> >> >       </property>
> >> >> >
> >> >> > inside IgniteConfiguration bean.
> >> >> >
> >> >> > Come to think of it, maybe your slowdown is caused not by thread
> >> >> > starvation
> >> >> > but by genuine locking due to repeated usage of the same keys. Are
> >> >> > you
> >> >> > sure
> >> >> > that you are using a lot of different keys and not just a couple
> >> >> > which
> >> >> > you
> >> >> > over-write over and over?
> >> >> >
> >> >> > Makes sense to try both.
> >> >> >
> >> >> > Regards,
> >> >> >
> >> >> > --
> >> >> > Ilya Kasnacheev
> >> >> >
> >> >> > 2018-07-04 13:19 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >> After googling for 1 hour to get nothing, I'm back for some basic
> >> >> >> knowledges.
> >> >> >>
> >> >> >> igniteConfiguration.setConnectorConfiguration(new
> >> >> >> ConnectorConfiguration().setThreadPoolSize(64))
> >> >> >>
> >> >> >> I suppose this is a piece of java code but I don't know how and
> >> >> >> where
> >> >> >> to execute it.
> >> >> >> I started the cluster with `bin/ignite.sh
> config/default-config.xml`
> >> >> >> and use golang written program as a client.
> >> >> >>
> >> >> >> Am I missing something?
> >> >> >>
> >> >> >> Thanks.
> >> >> >>
> >> >> >> On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
> >> >> >> <il...@gmail.com> wrote:
> >> >> >> > Hello!
> >> >> >> >
> >> >> >> > You can try increasing number of threads in REST thread pool by
> >> >> >> > setting
> >> >> >> > igniteConfiguration.setConnectorConfiguration(new
> >> >> >> > ConnectorConfiguration().setThreadPoolSize(64))
> >> >> >> > Or the corresponding Spring XML.
> >> >> >> >
> >> >> >> > This is as per https://apacheignite.readme.io/docs/rest-api
> >> >> >> >
> >> >> >> > Regards,
> >> >> >> >
> >> >> >> > --
> >> >> >> > Ilya Kasnacheev
> >> >> >> >
> >> >> >> > 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >> >> >>
> >> >> >> >> Hi,
> >> >> >> >>
> >> >> >> >> Here is the thread dump.
> >> >> >> >>
> >> >> >> >> Thank you.
> >> >> >> >>
> >> >> >> >> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
> >> >> >> >> <il...@gmail.com> wrote:
> >> >> >> >> > Hello!
> >> >> >> >> >
> >> >> >> >> > Can you provide the thread dump collected when the system is
> >> >> >> >> > under
> >> >> >> >> > peak
> >> >> >> >> > load?
> >> >> >> >> >
> >> >> >> >> > I think it's some other thread pool, such as client pool or
> >> >> >> >> > management
> >> >> >> >> > pool,
> >> >> >> >> > but have to take a look at the thread dump to be sure.
> >> >> >> >> >
> >> >> >> >> > Regards,
> >> >> >> >> >
> >> >> >> >> > --
> >> >> >> >> > Ilya Kasnacheev
> >> >> >> >> >
> >> >> >> >> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >> >> >> >>
> >> >> >> >> >> Hi,
> >> >> >> >> >>
> >> >> >> >> >> We use ignite as a redis server.
> >> >> >> >> >>
> >> >> >> >> >> The use case is
> >> >> >> >> >> a. Write timeout is 15ms on the client side.
> >> >> >> >> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
> >> >> >> >> >> c. Write req/s is about 120,000. In another word, 60,000 for
> >> >> >> >> >> each
> >> >> >> >> >> node.
> >> >> >> >> >>
> >> >> >> >> >> The problem is that timeout happens frequently, several ones
> >> >> >> >> >> per
> >> >> >> >> >> second.
> >> >> >> >> >> A lower write req/s results less timeout. I guest we have
> >> >> >> >> >> bottleneck
> >> >> >> >> >> somewhere.
> >> >> >> >> >>
> >> >> >> >> >> ==========
> >> >> >> >> >> $ tail -f
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-
> ee4f25ed.0.log
> >> >> >> >> >> | grep pool
> >> >> >> >> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
> >> >> >> >> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
> >> >> >> >> >> ==========
> >> >> >> >> >> system thread pool seems not busy at all.
> >> >> >> >> >>
> >> >> >> >> >> ==========
> >> >> >> >> >> $ tail -f
> >> >> >> >> >>
> >> >> >> >> >>
> >> >> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-
> ee4f25ed.0.log
> >> >> >> >> >> | grep "CPU "
> >> >> >> >> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
> >> >> >> >> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
> >> >> >> >> >> ==========
> >> >> >> >> >> CPU is not busy, either.
> >> >> >> >> >>
> >> >> >> >> >> We expected milli second level performance and we have too
> >> >> >> >> >> many
> >> >> >> >> >> timeout
> >> >> >> >> >> now.
> >> >> >> >> >> Any idea for optimizing the performance?
> >> >> >> >> >>
> >> >> >> >> >> Thanks.
> >> >> >> >> >
> >> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >
> >> >> >
> >> >
> >> >
> >
> >
>

Re: Performance acting as a redis server

Posted by 胡海麟 <h...@bulbit.jp>.
Hi,

Thank you for your advice.

We are checking if we can modify the connection part of the client.

Meanwhile, we still have timeout issue on ignite.
Our write timeout setting is 20ms, but timeout happens several times 1 minute.
The workload is like "Atomic Put, Throughput 100 - 150 Ops/Sec".

https://www.gridgain.com/resources/benchmarks/gridgain-benchmarks-results
According the benchmark above, single digital ms per op is expected.

Since we use golang redis client to communicate with ignite, does it
mean a great overhead?
Or any other client suggestion for golang?

Thanks.

On Fri, Jul 6, 2018 at 12:42 AM, Ilya Kasnacheev
<il...@gmail.com> wrote:
> Hello!
>
> I have no idea why your node has lost zookeeper connection, but my bet will
> be that you still failed to close some of connections, and they have clogged
> each and every available socket on your machine (which are still only 63k).
>
> Please make extra sure that when you open a socket, you close it regardless
> of errors, etc.
>
> Regards,
>
> --
> Ilya Kasnacheev
>
> 2018-07-05 13:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>>
>> Hi,
>>
>> Challenged again and I'm back :)
>>
>> One of the node stopped for SEGMENTATION.
>> The Zookeeper is used by other services, too. It is supposed working
>> all the time.
>>
>> I'm not sure if raising session timeout of zookeeper work or not. Ask
>> for suggestions.
>>
>> Thanks.
>>
>> On Thu, Jul 5, 2018 at 6:24 PM, Ilya Kasnacheev
>> <il...@gmail.com> wrote:
>> > Hello!
>> >
>> > The config looks correct. I'll check why ConnectorConfiguration doesn't
>> > have
>> > proper string representation, hence:
>> > https://issues.apache.org/jira/browse/IGNITE-8935
>> >
>> > Regards,
>> >
>> > --
>> > Ilya Kasnacheev
>> >
>> > 2018-07-05 9:21 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >>
>> >> Hi,
>> >>
>> >> I added the config above. But I don't know whether it is applied.
>> >>
>> >>
>> >>
>> >> connectorCfg=org.apache.ignite.configuration.ConnectorConfiguration@7d8704ef
>> >>
>> >> There is such a piece of relevant info but no detail. Is there any way
>> >> to confirm the details?
>> >>
>> >> Thanks.
>> >>
>> >> On Wed, Jul 4, 2018 at 7:25 PM, Ilya Kasnacheev
>> >> <il...@gmail.com> wrote:
>> >> > Hello!
>> >> >
>> >> > You should add it to config/default-config.xml in the form of
>> >> >
>> >> >       <property name="connectorConfiguration">
>> >> >         <bean
>> >> > class="org.apache.ignite.configuration.ConnectorConfiguration">
>> >> >           <property name="threadPoolSize" value="64"/>
>> >> >         </bean>
>> >> >       </property>
>> >> >
>> >> > inside IgniteConfiguration bean.
>> >> >
>> >> > Come to think of it, maybe your slowdown is caused not by thread
>> >> > starvation
>> >> > but by genuine locking due to repeated usage of the same keys. Are
>> >> > you
>> >> > sure
>> >> > that you are using a lot of different keys and not just a couple
>> >> > which
>> >> > you
>> >> > over-write over and over?
>> >> >
>> >> > Makes sense to try both.
>> >> >
>> >> > Regards,
>> >> >
>> >> > --
>> >> > Ilya Kasnacheev
>> >> >
>> >> > 2018-07-04 13:19 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >> >>
>> >> >> Hi,
>> >> >>
>> >> >> After googling for 1 hour to get nothing, I'm back for some basic
>> >> >> knowledges.
>> >> >>
>> >> >> igniteConfiguration.setConnectorConfiguration(new
>> >> >> ConnectorConfiguration().setThreadPoolSize(64))
>> >> >>
>> >> >> I suppose this is a piece of java code but I don't know how and
>> >> >> where
>> >> >> to execute it.
>> >> >> I started the cluster with `bin/ignite.sh config/default-config.xml`
>> >> >> and use golang written program as a client.
>> >> >>
>> >> >> Am I missing something?
>> >> >>
>> >> >> Thanks.
>> >> >>
>> >> >> On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
>> >> >> <il...@gmail.com> wrote:
>> >> >> > Hello!
>> >> >> >
>> >> >> > You can try increasing number of threads in REST thread pool by
>> >> >> > setting
>> >> >> > igniteConfiguration.setConnectorConfiguration(new
>> >> >> > ConnectorConfiguration().setThreadPoolSize(64))
>> >> >> > Or the corresponding Spring XML.
>> >> >> >
>> >> >> > This is as per https://apacheignite.readme.io/docs/rest-api
>> >> >> >
>> >> >> > Regards,
>> >> >> >
>> >> >> > --
>> >> >> > Ilya Kasnacheev
>> >> >> >
>> >> >> > 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >> >> >>
>> >> >> >> Hi,
>> >> >> >>
>> >> >> >> Here is the thread dump.
>> >> >> >>
>> >> >> >> Thank you.
>> >> >> >>
>> >> >> >> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
>> >> >> >> <il...@gmail.com> wrote:
>> >> >> >> > Hello!
>> >> >> >> >
>> >> >> >> > Can you provide the thread dump collected when the system is
>> >> >> >> > under
>> >> >> >> > peak
>> >> >> >> > load?
>> >> >> >> >
>> >> >> >> > I think it's some other thread pool, such as client pool or
>> >> >> >> > management
>> >> >> >> > pool,
>> >> >> >> > but have to take a look at the thread dump to be sure.
>> >> >> >> >
>> >> >> >> > Regards,
>> >> >> >> >
>> >> >> >> > --
>> >> >> >> > Ilya Kasnacheev
>> >> >> >> >
>> >> >> >> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >> >> >> >>
>> >> >> >> >> Hi,
>> >> >> >> >>
>> >> >> >> >> We use ignite as a redis server.
>> >> >> >> >>
>> >> >> >> >> The use case is
>> >> >> >> >> a. Write timeout is 15ms on the client side.
>> >> >> >> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
>> >> >> >> >> c. Write req/s is about 120,000. In another word, 60,000 for
>> >> >> >> >> each
>> >> >> >> >> node.
>> >> >> >> >>
>> >> >> >> >> The problem is that timeout happens frequently, several ones
>> >> >> >> >> per
>> >> >> >> >> second.
>> >> >> >> >> A lower write req/s results less timeout. I guest we have
>> >> >> >> >> bottleneck
>> >> >> >> >> somewhere.
>> >> >> >> >>
>> >> >> >> >> ==========
>> >> >> >> >> $ tail -f
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> >> >> >> | grep pool
>> >> >> >> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>> >> >> >> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
>> >> >> >> >> ==========
>> >> >> >> >> system thread pool seems not busy at all.
>> >> >> >> >>
>> >> >> >> >> ==========
>> >> >> >> >> $ tail -f
>> >> >> >> >>
>> >> >> >> >>
>> >> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> >> >> >> | grep "CPU "
>> >> >> >> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
>> >> >> >> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
>> >> >> >> >> ==========
>> >> >> >> >> CPU is not busy, either.
>> >> >> >> >>
>> >> >> >> >> We expected milli second level performance and we have too
>> >> >> >> >> many
>> >> >> >> >> timeout
>> >> >> >> >> now.
>> >> >> >> >> Any idea for optimizing the performance?
>> >> >> >> >>
>> >> >> >> >> Thanks.
>> >> >> >> >
>> >> >> >> >
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >
>> >
>
>

Re: Performance acting as a redis server

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

I have no idea why your node has lost zookeeper connection, but my bet will
be that you still failed to close some of connections, and they have
clogged each and every available socket on your machine (which are still
only 63k).

Please make extra sure that when you open a socket, you close it regardless
of errors, etc.

Regards,

-- 
Ilya Kasnacheev

2018-07-05 13:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:

> Hi,
>
> Challenged again and I'm back :)
>
> One of the node stopped for SEGMENTATION.
> The Zookeeper is used by other services, too. It is supposed working
> all the time.
>
> I'm not sure if raising session timeout of zookeeper work or not. Ask
> for suggestions.
>
> Thanks.
>
> On Thu, Jul 5, 2018 at 6:24 PM, Ilya Kasnacheev
> <il...@gmail.com> wrote:
> > Hello!
> >
> > The config looks correct. I'll check why ConnectorConfiguration doesn't
> have
> > proper string representation, hence:
> > https://issues.apache.org/jira/browse/IGNITE-8935
> >
> > Regards,
> >
> > --
> > Ilya Kasnacheev
> >
> > 2018-07-05 9:21 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >>
> >> Hi,
> >>
> >> I added the config above. But I don't know whether it is applied.
> >>
> >>
> >> connectorCfg=org.apache.ignite.configuration.ConnectorConfiguration@
> 7d8704ef
> >>
> >> There is such a piece of relevant info but no detail. Is there any way
> >> to confirm the details?
> >>
> >> Thanks.
> >>
> >> On Wed, Jul 4, 2018 at 7:25 PM, Ilya Kasnacheev
> >> <il...@gmail.com> wrote:
> >> > Hello!
> >> >
> >> > You should add it to config/default-config.xml in the form of
> >> >
> >> >       <property name="connectorConfiguration">
> >> >         <bean
> >> > class="org.apache.ignite.configuration.ConnectorConfiguration">
> >> >           <property name="threadPoolSize" value="64"/>
> >> >         </bean>
> >> >       </property>
> >> >
> >> > inside IgniteConfiguration bean.
> >> >
> >> > Come to think of it, maybe your slowdown is caused not by thread
> >> > starvation
> >> > but by genuine locking due to repeated usage of the same keys. Are you
> >> > sure
> >> > that you are using a lot of different keys and not just a couple which
> >> > you
> >> > over-write over and over?
> >> >
> >> > Makes sense to try both.
> >> >
> >> > Regards,
> >> >
> >> > --
> >> > Ilya Kasnacheev
> >> >
> >> > 2018-07-04 13:19 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >>
> >> >> Hi,
> >> >>
> >> >> After googling for 1 hour to get nothing, I'm back for some basic
> >> >> knowledges.
> >> >>
> >> >> igniteConfiguration.setConnectorConfiguration(new
> >> >> ConnectorConfiguration().setThreadPoolSize(64))
> >> >>
> >> >> I suppose this is a piece of java code but I don't know how and where
> >> >> to execute it.
> >> >> I started the cluster with `bin/ignite.sh config/default-config.xml`
> >> >> and use golang written program as a client.
> >> >>
> >> >> Am I missing something?
> >> >>
> >> >> Thanks.
> >> >>
> >> >> On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
> >> >> <il...@gmail.com> wrote:
> >> >> > Hello!
> >> >> >
> >> >> > You can try increasing number of threads in REST thread pool by
> >> >> > setting
> >> >> > igniteConfiguration.setConnectorConfiguration(new
> >> >> > ConnectorConfiguration().setThreadPoolSize(64))
> >> >> > Or the corresponding Spring XML.
> >> >> >
> >> >> > This is as per https://apacheignite.readme.io/docs/rest-api
> >> >> >
> >> >> > Regards,
> >> >> >
> >> >> > --
> >> >> > Ilya Kasnacheev
> >> >> >
> >> >> > 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >> Here is the thread dump.
> >> >> >>
> >> >> >> Thank you.
> >> >> >>
> >> >> >> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
> >> >> >> <il...@gmail.com> wrote:
> >> >> >> > Hello!
> >> >> >> >
> >> >> >> > Can you provide the thread dump collected when the system is
> under
> >> >> >> > peak
> >> >> >> > load?
> >> >> >> >
> >> >> >> > I think it's some other thread pool, such as client pool or
> >> >> >> > management
> >> >> >> > pool,
> >> >> >> > but have to take a look at the thread dump to be sure.
> >> >> >> >
> >> >> >> > Regards,
> >> >> >> >
> >> >> >> > --
> >> >> >> > Ilya Kasnacheev
> >> >> >> >
> >> >> >> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >> >> >>
> >> >> >> >> Hi,
> >> >> >> >>
> >> >> >> >> We use ignite as a redis server.
> >> >> >> >>
> >> >> >> >> The use case is
> >> >> >> >> a. Write timeout is 15ms on the client side.
> >> >> >> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
> >> >> >> >> c. Write req/s is about 120,000. In another word, 60,000 for
> each
> >> >> >> >> node.
> >> >> >> >>
> >> >> >> >> The problem is that timeout happens frequently, several ones
> per
> >> >> >> >> second.
> >> >> >> >> A lower write req/s results less timeout. I guest we have
> >> >> >> >> bottleneck
> >> >> >> >> somewhere.
> >> >> >> >>
> >> >> >> >> ==========
> >> >> >> >> $ tail -f
> >> >> >> >>
> >> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-
> ee4f25ed.0.log
> >> >> >> >> | grep pool
> >> >> >> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
> >> >> >> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
> >> >> >> >> ==========
> >> >> >> >> system thread pool seems not busy at all.
> >> >> >> >>
> >> >> >> >> ==========
> >> >> >> >> $ tail -f
> >> >> >> >>
> >> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-
> ee4f25ed.0.log
> >> >> >> >> | grep "CPU "
> >> >> >> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
> >> >> >> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
> >> >> >> >> ==========
> >> >> >> >> CPU is not busy, either.
> >> >> >> >>
> >> >> >> >> We expected milli second level performance and we have too many
> >> >> >> >> timeout
> >> >> >> >> now.
> >> >> >> >> Any idea for optimizing the performance?
> >> >> >> >>
> >> >> >> >> Thanks.
> >> >> >> >
> >> >> >> >
> >> >> >
> >> >> >
> >> >
> >> >
> >
> >
>

Re: Performance acting as a redis server

Posted by 胡海麟 <h...@bulbit.jp>.
Hi,

Challenged again and I'm back :)

One of the node stopped for SEGMENTATION.
The Zookeeper is used by other services, too. It is supposed working
all the time.

I'm not sure if raising session timeout of zookeeper work or not. Ask
for suggestions.

Thanks.

On Thu, Jul 5, 2018 at 6:24 PM, Ilya Kasnacheev
<il...@gmail.com> wrote:
> Hello!
>
> The config looks correct. I'll check why ConnectorConfiguration doesn't have
> proper string representation, hence:
> https://issues.apache.org/jira/browse/IGNITE-8935
>
> Regards,
>
> --
> Ilya Kasnacheev
>
> 2018-07-05 9:21 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>>
>> Hi,
>>
>> I added the config above. But I don't know whether it is applied.
>>
>>
>> connectorCfg=org.apache.ignite.configuration.ConnectorConfiguration@7d8704ef
>>
>> There is such a piece of relevant info but no detail. Is there any way
>> to confirm the details?
>>
>> Thanks.
>>
>> On Wed, Jul 4, 2018 at 7:25 PM, Ilya Kasnacheev
>> <il...@gmail.com> wrote:
>> > Hello!
>> >
>> > You should add it to config/default-config.xml in the form of
>> >
>> >       <property name="connectorConfiguration">
>> >         <bean
>> > class="org.apache.ignite.configuration.ConnectorConfiguration">
>> >           <property name="threadPoolSize" value="64"/>
>> >         </bean>
>> >       </property>
>> >
>> > inside IgniteConfiguration bean.
>> >
>> > Come to think of it, maybe your slowdown is caused not by thread
>> > starvation
>> > but by genuine locking due to repeated usage of the same keys. Are you
>> > sure
>> > that you are using a lot of different keys and not just a couple which
>> > you
>> > over-write over and over?
>> >
>> > Makes sense to try both.
>> >
>> > Regards,
>> >
>> > --
>> > Ilya Kasnacheev
>> >
>> > 2018-07-04 13:19 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >>
>> >> Hi,
>> >>
>> >> After googling for 1 hour to get nothing, I'm back for some basic
>> >> knowledges.
>> >>
>> >> igniteConfiguration.setConnectorConfiguration(new
>> >> ConnectorConfiguration().setThreadPoolSize(64))
>> >>
>> >> I suppose this is a piece of java code but I don't know how and where
>> >> to execute it.
>> >> I started the cluster with `bin/ignite.sh config/default-config.xml`
>> >> and use golang written program as a client.
>> >>
>> >> Am I missing something?
>> >>
>> >> Thanks.
>> >>
>> >> On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
>> >> <il...@gmail.com> wrote:
>> >> > Hello!
>> >> >
>> >> > You can try increasing number of threads in REST thread pool by
>> >> > setting
>> >> > igniteConfiguration.setConnectorConfiguration(new
>> >> > ConnectorConfiguration().setThreadPoolSize(64))
>> >> > Or the corresponding Spring XML.
>> >> >
>> >> > This is as per https://apacheignite.readme.io/docs/rest-api
>> >> >
>> >> > Regards,
>> >> >
>> >> > --
>> >> > Ilya Kasnacheev
>> >> >
>> >> > 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >> >>
>> >> >> Hi,
>> >> >>
>> >> >> Here is the thread dump.
>> >> >>
>> >> >> Thank you.
>> >> >>
>> >> >> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
>> >> >> <il...@gmail.com> wrote:
>> >> >> > Hello!
>> >> >> >
>> >> >> > Can you provide the thread dump collected when the system is under
>> >> >> > peak
>> >> >> > load?
>> >> >> >
>> >> >> > I think it's some other thread pool, such as client pool or
>> >> >> > management
>> >> >> > pool,
>> >> >> > but have to take a look at the thread dump to be sure.
>> >> >> >
>> >> >> > Regards,
>> >> >> >
>> >> >> > --
>> >> >> > Ilya Kasnacheev
>> >> >> >
>> >> >> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >> >> >>
>> >> >> >> Hi,
>> >> >> >>
>> >> >> >> We use ignite as a redis server.
>> >> >> >>
>> >> >> >> The use case is
>> >> >> >> a. Write timeout is 15ms on the client side.
>> >> >> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
>> >> >> >> c. Write req/s is about 120,000. In another word, 60,000 for each
>> >> >> >> node.
>> >> >> >>
>> >> >> >> The problem is that timeout happens frequently, several ones per
>> >> >> >> second.
>> >> >> >> A lower write req/s results less timeout. I guest we have
>> >> >> >> bottleneck
>> >> >> >> somewhere.
>> >> >> >>
>> >> >> >> ==========
>> >> >> >> $ tail -f
>> >> >> >>
>> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> >> >> | grep pool
>> >> >> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>> >> >> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
>> >> >> >> ==========
>> >> >> >> system thread pool seems not busy at all.
>> >> >> >>
>> >> >> >> ==========
>> >> >> >> $ tail -f
>> >> >> >>
>> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> >> >> | grep "CPU "
>> >> >> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
>> >> >> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
>> >> >> >> ==========
>> >> >> >> CPU is not busy, either.
>> >> >> >>
>> >> >> >> We expected milli second level performance and we have too many
>> >> >> >> timeout
>> >> >> >> now.
>> >> >> >> Any idea for optimizing the performance?
>> >> >> >>
>> >> >> >> Thanks.
>> >> >> >
>> >> >> >
>> >> >
>> >> >
>> >
>> >
>
>

Re: Performance acting as a redis server

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

The config looks correct. I'll check why ConnectorConfiguration doesn't
have proper string representation, hence:
https://issues.apache.org/jira/browse/IGNITE-8935

Regards,

-- 
Ilya Kasnacheev

2018-07-05 9:21 GMT+03:00 胡海麟 <h...@bulbit.jp>:

> Hi,
>
> I added the config above. But I don't know whether it is applied.
>
> connectorCfg=org.apache.ignite.configuration.ConnectorConfiguration@
> 7d8704ef
>
> There is such a piece of relevant info but no detail. Is there any way
> to confirm the details?
>
> Thanks.
>
> On Wed, Jul 4, 2018 at 7:25 PM, Ilya Kasnacheev
> <il...@gmail.com> wrote:
> > Hello!
> >
> > You should add it to config/default-config.xml in the form of
> >
> >       <property name="connectorConfiguration">
> >         <bean
> > class="org.apache.ignite.configuration.ConnectorConfiguration">
> >           <property name="threadPoolSize" value="64"/>
> >         </bean>
> >       </property>
> >
> > inside IgniteConfiguration bean.
> >
> > Come to think of it, maybe your slowdown is caused not by thread
> starvation
> > but by genuine locking due to repeated usage of the same keys. Are you
> sure
> > that you are using a lot of different keys and not just a couple which
> you
> > over-write over and over?
> >
> > Makes sense to try both.
> >
> > Regards,
> >
> > --
> > Ilya Kasnacheev
> >
> > 2018-07-04 13:19 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >>
> >> Hi,
> >>
> >> After googling for 1 hour to get nothing, I'm back for some basic
> >> knowledges.
> >>
> >> igniteConfiguration.setConnectorConfiguration(new
> >> ConnectorConfiguration().setThreadPoolSize(64))
> >>
> >> I suppose this is a piece of java code but I don't know how and where
> >> to execute it.
> >> I started the cluster with `bin/ignite.sh config/default-config.xml`
> >> and use golang written program as a client.
> >>
> >> Am I missing something?
> >>
> >> Thanks.
> >>
> >> On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
> >> <il...@gmail.com> wrote:
> >> > Hello!
> >> >
> >> > You can try increasing number of threads in REST thread pool by
> setting
> >> > igniteConfiguration.setConnectorConfiguration(new
> >> > ConnectorConfiguration().setThreadPoolSize(64))
> >> > Or the corresponding Spring XML.
> >> >
> >> > This is as per https://apacheignite.readme.io/docs/rest-api
> >> >
> >> > Regards,
> >> >
> >> > --
> >> > Ilya Kasnacheev
> >> >
> >> > 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >>
> >> >> Hi,
> >> >>
> >> >> Here is the thread dump.
> >> >>
> >> >> Thank you.
> >> >>
> >> >> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
> >> >> <il...@gmail.com> wrote:
> >> >> > Hello!
> >> >> >
> >> >> > Can you provide the thread dump collected when the system is under
> >> >> > peak
> >> >> > load?
> >> >> >
> >> >> > I think it's some other thread pool, such as client pool or
> >> >> > management
> >> >> > pool,
> >> >> > but have to take a look at the thread dump to be sure.
> >> >> >
> >> >> > Regards,
> >> >> >
> >> >> > --
> >> >> > Ilya Kasnacheev
> >> >> >
> >> >> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >> >>
> >> >> >> Hi,
> >> >> >>
> >> >> >> We use ignite as a redis server.
> >> >> >>
> >> >> >> The use case is
> >> >> >> a. Write timeout is 15ms on the client side.
> >> >> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
> >> >> >> c. Write req/s is about 120,000. In another word, 60,000 for each
> >> >> >> node.
> >> >> >>
> >> >> >> The problem is that timeout happens frequently, several ones per
> >> >> >> second.
> >> >> >> A lower write req/s results less timeout. I guest we have
> bottleneck
> >> >> >> somewhere.
> >> >> >>
> >> >> >> ==========
> >> >> >> $ tail -f
> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-
> ee4f25ed.0.log
> >> >> >> | grep pool
> >> >> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
> >> >> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
> >> >> >> ==========
> >> >> >> system thread pool seems not busy at all.
> >> >> >>
> >> >> >> ==========
> >> >> >> $ tail -f
> >> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-
> ee4f25ed.0.log
> >> >> >> | grep "CPU "
> >> >> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
> >> >> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
> >> >> >> ==========
> >> >> >> CPU is not busy, either.
> >> >> >>
> >> >> >> We expected milli second level performance and we have too many
> >> >> >> timeout
> >> >> >> now.
> >> >> >> Any idea for optimizing the performance?
> >> >> >>
> >> >> >> Thanks.
> >> >> >
> >> >> >
> >> >
> >> >
> >
> >
>

Re: Performance acting as a redis server

Posted by 胡海麟 <h...@bulbit.jp>.
Hi,

I added the config above. But I don't know whether it is applied.

connectorCfg=org.apache.ignite.configuration.ConnectorConfiguration@7d8704ef

There is such a piece of relevant info but no detail. Is there any way
to confirm the details?

Thanks.

On Wed, Jul 4, 2018 at 7:25 PM, Ilya Kasnacheev
<il...@gmail.com> wrote:
> Hello!
>
> You should add it to config/default-config.xml in the form of
>
>       <property name="connectorConfiguration">
>         <bean
> class="org.apache.ignite.configuration.ConnectorConfiguration">
>           <property name="threadPoolSize" value="64"/>
>         </bean>
>       </property>
>
> inside IgniteConfiguration bean.
>
> Come to think of it, maybe your slowdown is caused not by thread starvation
> but by genuine locking due to repeated usage of the same keys. Are you sure
> that you are using a lot of different keys and not just a couple which you
> over-write over and over?
>
> Makes sense to try both.
>
> Regards,
>
> --
> Ilya Kasnacheev
>
> 2018-07-04 13:19 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>>
>> Hi,
>>
>> After googling for 1 hour to get nothing, I'm back for some basic
>> knowledges.
>>
>> igniteConfiguration.setConnectorConfiguration(new
>> ConnectorConfiguration().setThreadPoolSize(64))
>>
>> I suppose this is a piece of java code but I don't know how and where
>> to execute it.
>> I started the cluster with `bin/ignite.sh config/default-config.xml`
>> and use golang written program as a client.
>>
>> Am I missing something?
>>
>> Thanks.
>>
>> On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
>> <il...@gmail.com> wrote:
>> > Hello!
>> >
>> > You can try increasing number of threads in REST thread pool by setting
>> > igniteConfiguration.setConnectorConfiguration(new
>> > ConnectorConfiguration().setThreadPoolSize(64))
>> > Or the corresponding Spring XML.
>> >
>> > This is as per https://apacheignite.readme.io/docs/rest-api
>> >
>> > Regards,
>> >
>> > --
>> > Ilya Kasnacheev
>> >
>> > 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >>
>> >> Hi,
>> >>
>> >> Here is the thread dump.
>> >>
>> >> Thank you.
>> >>
>> >> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
>> >> <il...@gmail.com> wrote:
>> >> > Hello!
>> >> >
>> >> > Can you provide the thread dump collected when the system is under
>> >> > peak
>> >> > load?
>> >> >
>> >> > I think it's some other thread pool, such as client pool or
>> >> > management
>> >> > pool,
>> >> > but have to take a look at the thread dump to be sure.
>> >> >
>> >> > Regards,
>> >> >
>> >> > --
>> >> > Ilya Kasnacheev
>> >> >
>> >> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >> >>
>> >> >> Hi,
>> >> >>
>> >> >> We use ignite as a redis server.
>> >> >>
>> >> >> The use case is
>> >> >> a. Write timeout is 15ms on the client side.
>> >> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
>> >> >> c. Write req/s is about 120,000. In another word, 60,000 for each
>> >> >> node.
>> >> >>
>> >> >> The problem is that timeout happens frequently, several ones per
>> >> >> second.
>> >> >> A lower write req/s results less timeout. I guest we have bottleneck
>> >> >> somewhere.
>> >> >>
>> >> >> ==========
>> >> >> $ tail -f
>> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> >> | grep pool
>> >> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>> >> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
>> >> >> ==========
>> >> >> system thread pool seems not busy at all.
>> >> >>
>> >> >> ==========
>> >> >> $ tail -f
>> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> >> | grep "CPU "
>> >> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
>> >> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
>> >> >> ==========
>> >> >> CPU is not busy, either.
>> >> >>
>> >> >> We expected milli second level performance and we have too many
>> >> >> timeout
>> >> >> now.
>> >> >> Any idea for optimizing the performance?
>> >> >>
>> >> >> Thanks.
>> >> >
>> >> >
>> >
>> >
>
>

Re: Performance acting as a redis server

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

You should add it to config/default-config.xml in the form of

      <property name="connectorConfiguration">
        <bean
class="org.apache.ignite.configuration.ConnectorConfiguration">
          <property name="threadPoolSize" value="64"/>
        </bean>
      </property>

inside IgniteConfiguration bean.

Come to think of it, maybe your slowdown is caused not by thread starvation
but by genuine locking due to repeated usage of the same keys. Are you sure
that you are using a lot of different keys and not just a couple which you
over-write over and over?

Makes sense to try both.

Regards,

-- 
Ilya Kasnacheev

2018-07-04 13:19 GMT+03:00 胡海麟 <h...@bulbit.jp>:

> Hi,
>
> After googling for 1 hour to get nothing, I'm back for some basic
> knowledges.
>
> igniteConfiguration.setConnectorConfiguration(new
> ConnectorConfiguration().setThreadPoolSize(64))
>
> I suppose this is a piece of java code but I don't know how and where
> to execute it.
> I started the cluster with `bin/ignite.sh config/default-config.xml`
> and use golang written program as a client.
>
> Am I missing something?
>
> Thanks.
>
> On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
> <il...@gmail.com> wrote:
> > Hello!
> >
> > You can try increasing number of threads in REST thread pool by setting
> > igniteConfiguration.setConnectorConfiguration(new
> > ConnectorConfiguration().setThreadPoolSize(64))
> > Or the corresponding Spring XML.
> >
> > This is as per https://apacheignite.readme.io/docs/rest-api
> >
> > Regards,
> >
> > --
> > Ilya Kasnacheev
> >
> > 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >>
> >> Hi,
> >>
> >> Here is the thread dump.
> >>
> >> Thank you.
> >>
> >> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
> >> <il...@gmail.com> wrote:
> >> > Hello!
> >> >
> >> > Can you provide the thread dump collected when the system is under
> peak
> >> > load?
> >> >
> >> > I think it's some other thread pool, such as client pool or management
> >> > pool,
> >> > but have to take a look at the thread dump to be sure.
> >> >
> >> > Regards,
> >> >
> >> > --
> >> > Ilya Kasnacheev
> >> >
> >> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >> >>
> >> >> Hi,
> >> >>
> >> >> We use ignite as a redis server.
> >> >>
> >> >> The use case is
> >> >> a. Write timeout is 15ms on the client side.
> >> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
> >> >> c. Write req/s is about 120,000. In another word, 60,000 for each
> node.
> >> >>
> >> >> The problem is that timeout happens frequently, several ones per
> >> >> second.
> >> >> A lower write req/s results less timeout. I guest we have bottleneck
> >> >> somewhere.
> >> >>
> >> >> ==========
> >> >> $ tail -f
> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
> >> >> | grep pool
> >> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
> >> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
> >> >> ==========
> >> >> system thread pool seems not busy at all.
> >> >>
> >> >> ==========
> >> >> $ tail -f
> >> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
> >> >> | grep "CPU "
> >> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
> >> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
> >> >> ==========
> >> >> CPU is not busy, either.
> >> >>
> >> >> We expected milli second level performance and we have too many
> timeout
> >> >> now.
> >> >> Any idea for optimizing the performance?
> >> >>
> >> >> Thanks.
> >> >
> >> >
> >
> >
>

Re: Performance acting as a redis server

Posted by 胡海麟 <h...@bulbit.jp>.
Hi,

After googling for 1 hour to get nothing, I'm back for some basic knowledges.

igniteConfiguration.setConnectorConfiguration(new
ConnectorConfiguration().setThreadPoolSize(64))

I suppose this is a piece of java code but I don't know how and where
to execute it.
I started the cluster with `bin/ignite.sh config/default-config.xml`
and use golang written program as a client.

Am I missing something?

Thanks.

On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
<il...@gmail.com> wrote:
> Hello!
>
> You can try increasing number of threads in REST thread pool by setting
> igniteConfiguration.setConnectorConfiguration(new
> ConnectorConfiguration().setThreadPoolSize(64))
> Or the corresponding Spring XML.
>
> This is as per https://apacheignite.readme.io/docs/rest-api
>
> Regards,
>
> --
> Ilya Kasnacheev
>
> 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>>
>> Hi,
>>
>> Here is the thread dump.
>>
>> Thank you.
>>
>> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
>> <il...@gmail.com> wrote:
>> > Hello!
>> >
>> > Can you provide the thread dump collected when the system is under peak
>> > load?
>> >
>> > I think it's some other thread pool, such as client pool or management
>> > pool,
>> > but have to take a look at the thread dump to be sure.
>> >
>> > Regards,
>> >
>> > --
>> > Ilya Kasnacheev
>> >
>> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >>
>> >> Hi,
>> >>
>> >> We use ignite as a redis server.
>> >>
>> >> The use case is
>> >> a. Write timeout is 15ms on the client side.
>> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
>> >> c. Write req/s is about 120,000. In another word, 60,000 for each node.
>> >>
>> >> The problem is that timeout happens frequently, several ones per
>> >> second.
>> >> A lower write req/s results less timeout. I guest we have bottleneck
>> >> somewhere.
>> >>
>> >> ==========
>> >> $ tail -f
>> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> | grep pool
>> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
>> >> ==========
>> >> system thread pool seems not busy at all.
>> >>
>> >> ==========
>> >> $ tail -f
>> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> | grep "CPU "
>> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
>> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
>> >> ==========
>> >> CPU is not busy, either.
>> >>
>> >> We expected milli second level performance and we have too many timeout
>> >> now.
>> >> Any idea for optimizing the performance?
>> >>
>> >> Thanks.
>> >
>> >
>
>

Re: Performance acting as a redis server

Posted by 胡海麟 <h...@bulbit.jp>.
Hi,

I'll have a try.

Thank you.

On Wed, Jul 4, 2018 at 6:22 PM, Ilya Kasnacheev
<il...@gmail.com> wrote:
> Hello!
>
> You can try increasing number of threads in REST thread pool by setting
> igniteConfiguration.setConnectorConfiguration(new
> ConnectorConfiguration().setThreadPoolSize(64))
> Or the corresponding Spring XML.
>
> This is as per https://apacheignite.readme.io/docs/rest-api
>
> Regards,
>
> --
> Ilya Kasnacheev
>
> 2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>>
>> Hi,
>>
>> Here is the thread dump.
>>
>> Thank you.
>>
>> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
>> <il...@gmail.com> wrote:
>> > Hello!
>> >
>> > Can you provide the thread dump collected when the system is under peak
>> > load?
>> >
>> > I think it's some other thread pool, such as client pool or management
>> > pool,
>> > but have to take a look at the thread dump to be sure.
>> >
>> > Regards,
>> >
>> > --
>> > Ilya Kasnacheev
>> >
>> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>> >>
>> >> Hi,
>> >>
>> >> We use ignite as a redis server.
>> >>
>> >> The use case is
>> >> a. Write timeout is 15ms on the client side.
>> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
>> >> c. Write req/s is about 120,000. In another word, 60,000 for each node.
>> >>
>> >> The problem is that timeout happens frequently, several ones per
>> >> second.
>> >> A lower write req/s results less timeout. I guest we have bottleneck
>> >> somewhere.
>> >>
>> >> ==========
>> >> $ tail -f
>> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> | grep pool
>> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
>> >> ==========
>> >> system thread pool seems not busy at all.
>> >>
>> >> ==========
>> >> $ tail -f
>> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> >> | grep "CPU "
>> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
>> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
>> >> ==========
>> >> CPU is not busy, either.
>> >>
>> >> We expected milli second level performance and we have too many timeout
>> >> now.
>> >> Any idea for optimizing the performance?
>> >>
>> >> Thanks.
>> >
>> >
>
>

Re: Performance acting as a redis server

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

You can try increasing number of threads in REST thread pool by setting
igniteConfiguration.setConnectorConfiguration(new
ConnectorConfiguration().setThreadPoolSize(64))
Or the corresponding Spring XML.

This is as per https://apacheignite.readme.io/docs/rest-api

Regards,

-- 
Ilya Kasnacheev

2018-07-04 12:04 GMT+03:00 胡海麟 <h...@bulbit.jp>:

> Hi,
>
> Here is the thread dump.
>
> Thank you.
>
> On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
> <il...@gmail.com> wrote:
> > Hello!
> >
> > Can you provide the thread dump collected when the system is under peak
> > load?
> >
> > I think it's some other thread pool, such as client pool or management
> pool,
> > but have to take a look at the thread dump to be sure.
> >
> > Regards,
> >
> > --
> > Ilya Kasnacheev
> >
> > 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
> >>
> >> Hi,
> >>
> >> We use ignite as a redis server.
> >>
> >> The use case is
> >> a. Write timeout is 15ms on the client side.
> >> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
> >> c. Write req/s is about 120,000. In another word, 60,000 for each node.
> >>
> >> The problem is that timeout happens frequently, several ones per second.
> >> A lower write req/s results less timeout. I guest we have bottleneck
> >> somewhere.
> >>
> >> ==========
> >> $ tail -f
> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
> >> | grep pool
> >>     ^-- Public thread pool [active=0, idle=0, qSize=0]
> >>     ^-- System thread pool [active=0, idle=16, qSize=0]
> >> ==========
> >> system thread pool seems not busy at all.
> >>
> >> ==========
> >> $ tail -f
> >> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
> >> | grep "CPU "
> >>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
> >>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
> >> ==========
> >> CPU is not busy, either.
> >>
> >> We expected milli second level performance and we have too many timeout
> >> now.
> >> Any idea for optimizing the performance?
> >>
> >> Thanks.
> >
> >
>

Re: Performance acting as a redis server

Posted by 胡海麟 <h...@bulbit.jp>.
Hi,

Here is the thread dump.

Thank you.

On Wed, Jul 4, 2018 at 5:52 PM, Ilya Kasnacheev
<il...@gmail.com> wrote:
> Hello!
>
> Can you provide the thread dump collected when the system is under peak
> load?
>
> I think it's some other thread pool, such as client pool or management pool,
> but have to take a look at the thread dump to be sure.
>
> Regards,
>
> --
> Ilya Kasnacheev
>
> 2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:
>>
>> Hi,
>>
>> We use ignite as a redis server.
>>
>> The use case is
>> a. Write timeout is 15ms on the client side.
>> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
>> c. Write req/s is about 120,000. In another word, 60,000 for each node.
>>
>> The problem is that timeout happens frequently, several ones per second.
>> A lower write req/s results less timeout. I guest we have bottleneck
>> somewhere.
>>
>> ==========
>> $ tail -f
>> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> | grep pool
>>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>>     ^-- System thread pool [active=0, idle=16, qSize=0]
>> ==========
>> system thread pool seems not busy at all.
>>
>> ==========
>> $ tail -f
>> /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
>> | grep "CPU "
>>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
>>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
>> ==========
>> CPU is not busy, either.
>>
>> We expected milli second level performance and we have too many timeout
>> now.
>> Any idea for optimizing the performance?
>>
>> Thanks.
>
>

Re: Performance acting as a redis server

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

Can you provide the thread dump collected when the system is under peak
load?

I think it's some other thread pool, such as client pool or management
pool, but have to take a look at the thread dump to be sure.

Regards,

-- 
Ilya Kasnacheev

2018-07-04 11:33 GMT+03:00 胡海麟 <h...@bulbit.jp>:

> Hi,
>
> We use ignite as a redis server.
>
> The use case is
> a. Write timeout is 15ms on the client side.
> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
> c. Write req/s is about 120,000. In another word, 60,000 for each node.
>
> The problem is that timeout happens frequently, several ones per second.
> A lower write req/s results less timeout. I guest we have bottleneck
> somewhere.
>
> ==========
> $ tail -f /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-
> ee4f25ed.0.log
> | grep pool
>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>     ^-- System thread pool [active=0, idle=16, qSize=0]
> ==========
> system thread pool seems not busy at all.
>
> ==========
> $ tail -f /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-
> ee4f25ed.0.log
> | grep "CPU "
>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
> ==========
> CPU is not busy, either.
>
> We expected milli second level performance and we have too many timeout
> now.
> Any idea for optimizing the performance?
>
> Thanks.
>

Re: Performance acting as a redis server

Posted by 胡海麟 <h...@bulbit.jp>.
Sorry, write req/s was wrong.
It is about 25,000, 12,500/s for each node.

On Wed, Jul 4, 2018 at 5:33 PM, 胡海麟 <h...@bulbit.jp> wrote:
> Hi,
>
> We use ignite as a redis server.
>
> The use case is
> a. Write timeout is 15ms on the client side.
> b. 2 server nodes. each is an EC2 r4.4xlarge instance.
> c. Write req/s is about 120,000. In another word, 60,000 for each node.
>
> The problem is that timeout happens frequently, several ones per second.
> A lower write req/s results less timeout. I guest we have bottleneck somewhere.
>
> ==========
> $ tail -f /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
> | grep pool
>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>     ^-- System thread pool [active=0, idle=16, qSize=0]
> ==========
> system thread pool seems not busy at all.
>
> ==========
> $ tail -f /opt/apache-ignite-fabric-2.5.0-bin/work/log/ignite-ee4f25ed.0.log
> | grep "CPU "
>     ^-- CPU [cur=14.77%, avg=6.21%, GC=0%]
>     ^-- CPU [cur=13.43%, avg=6.23%, GC=0%]
> ==========
> CPU is not busy, either.
>
> We expected milli second level performance and we have too many timeout now.
> Any idea for optimizing the performance?
>
> Thanks.