Page 2 of 2 FirstFirst 12
Results 11 to 15 of 15
  1. #11
    Member
    Join Date
    Jul 2010
    Location
    Sydney
    Posts
    8
    Hi guys,

    Thanks for your reply.

    We had to increase the open files limit on the server to solve the problem.
    What's strange is that the number of sessions could somehow reach nearly 44,000.
    Seems like when a user opens multiple pages, multiple sessions are created. Is there a good way to bring this number down? Like using only one session for each ip address?

    And we have a new problem.

    We are now able to start up the LS server, and keep it getting updated for a day or so. But the next morning, the socket connection between the application for supplying data and LS server would mysteriously drop. And we have to manually reconnect it through jmx. This seems to be a different issue all together. And I'm not even sure if this is a LS issue...

    Any help is much appreciated!

    Cheers,
    William

  2. #12
    Member
    Join Date
    Jul 2010
    Location
    Sydney
    Posts
    8
    Hi guys,

    We found some error logs right before the connection went down. Does this mean anything to you?

    LS_sessi13-Aug-10 09:51:07,322 |ERROR|LightstreamerLogger.connections |NIO WRITE SELECTOR |Failure in HTTP connection on Lightstreamer HTTP Server
    com.lightstreamer.h.nb
    at com.lightstreamer.f.a.hb.b(hb.java)
    at com.lightstreamer.f.a.hb.c(hb.java)
    at com.lightstreamer.f.a.i.c(i.java)
    at com.lightstreamer.h.hb.g(hb.java)
    at com.lightstreamer.a.qc.h(qc.java)
    at com.lightstreamer.h.ob.a(ob.java)
    at com.lightstreamer.h.ob.a(ob.java)
    at com.lightstreamer.h.eb.a(eb.java)
    at com.lightstreamer.g.a.y.b(y.java)
    at com.lightstreamer.g.a.j.d(j.java)
    at com.lightstreamer.g.a.j.a(j.java)
    at com.lightstreamer.g.a.c.run(c.java)

    Thanks,
    William

  3. #13
    Administrator
    Join Date
    Jul 2006
    Location
    Milan
    Posts
    958
    If you have multiple pages on the same web application that need to communicate with Lightstreamer Server, you are recommended to use a single session and share it among all pages. See DOCS-SDKs\sdk_client_web\doc\Web Client Dev.pdf, paragraph 2.2, or analyze the code of the various demos.

    Turning to the other issue:

    By "the application for supplying data" do you mean a Remote Server that communicates with Lightstreamer Server through the ARI protocol?
    Which is the role of jmx?

    The reported exception is about a session that founds itself closed by an external agent. It is not a normal case, but it seems unrelated with problems that may be occurring in the communication between LS Server and the Remote Server.

    We need more details to proceed.
    Can you identify the exact moment in which the communication between LS Server and the Remote Server is broken and provide us with a log snippet including the whole period? In case it's too big, could you manage to replicate the issue with only a few active sessions?

  4. #14
    Member
    Join Date
    Jul 2010
    Location
    Sydney
    Posts
    8
    Hi DarioCrivelli,

    Thanks, we will have a look at the doco.

    The other application is responsible for feeding data to LS server through the RobustNetworkedDataProvider adapters. We've exposed mbeans in jmx to connect/disconnect socket connections to LS server.

    We did a tcp dump. And we managed to find an error msg right before the moment when connection was lost. Here it is:
    Code:
    8-Aug-10 09:08:51,615 |ERROR|.data.RobustNetworkedDataProvider|#7 Reply Receiver          |Got fatal error from the inner Proxy Adapter
    com.lightstreamer.adapters.remote.RemotingException: Exception caught while reading from the reply stream: Connection reset
            at com.lightstreamer.adapters.remote.request_reply.NotifyReceiver.run(NotifyReceiver.java:71)
    Caused by: java.net.SocketException: Connection reset
            at java.net.SocketInputStream.read(SocketInputStream.java:168)
            at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
            at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
            at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
            at java.io.InputStreamReader.read(InputStreamReader.java:167)
            at java.io.BufferedReader.fill(BufferedReader.java:136)
            at java.io.BufferedReader.readLine(BufferedReader.java:299)
            at java.io.LineNumberReader.readLine(LineNumberReader.java:182)
            at com.lightstreamer.adapters.remote.request_reply.NotifyReceiver.run(NotifyReceiver.java:66)
    18-Aug-10 09:09:06,307 |ERROR|LightstreamerLogger.requests     |SERVER POOLED THREAD 2     |Bad request: LS_session parameter missing
    18-Aug-10 09:09:06,307 |ERROR|LightstreamerLogger.connections  |SERVER POOLED THREAD 2     |Failure in request processing: Bad request: com.lightstreamer.b.c: LS_sessi
    on parameter missing
    18-Aug-10 09:09:21,621 |ERROR|rs.remote.data.RemoteDataProvider|Timer-10                   |Exception caught while subscribing to item 'U20'
    com.lightstreamer.adapters.remote.RemotingException: Timeout while waiting for an answer to request 460000012a7e94cbeb
            at com.lightstreamer.adapters.remote.request_reply.RequestSender$1.run(RequestSender.java:200)
            at java.util.TimerThread.mainLoop(Timer.java:512)
            at java.util.TimerThread.run(Timer.java:462)
    Do you know why the "fatal error" occurred?

    Also on our LS server unix box, we've made some changes to Sysctl keepalive options. They have been tuned down significantly to detected stale connections sooner (in sec):

    net.ipv4.tcp_keepalive_intvl = 15
    net.ipv4.tcp_keepalive_probes = 5
    net.ipv4.tcp_keepalive_time = 45

    From your point of view, would this be good to the system?

  5. #15
    Administrator
    Join Date
    Jul 2006
    Location
    Milan
    Posts
    958
    From Lightstreamer Server point of view, the connection was closed by the Remote part. Do you feel it's possible? Is the log a full snippet or has it been filtered? Was anything logged just before the first line reported?
    Of course, the error is "fatal" only for the underlying Proxy Adapter. The RobustNetworkedDataProvider can overcome the issue by creating a new underlying Proxy Adapter.

    About keepalives, if you can enforce them, this can only have positive effects;
    they can also prevent any intermediate node from dropping the socket.
    Note that the ARI protocol also defines its own keepalives, that can be sent by the Remote Server to the Proxy Adapter (with no timeout checks, though).
    I suppose you are not using our .NET Remote Adapter SDK;
    otherwise, consider that the Remote Server already sends keepalives every second (keepalives are not sent when data already flows on the connection).

 

 

Similar Threads

  1. Adapter ports not up
    By whewell in forum Adapter APIs
    Replies: 8
    Last Post: July 29th, 2010, 02:54 PM
  2. Replies: 0
    Last Post: February 17th, 2010, 06:10 PM
  3. Replies: 5
    Last Post: February 4th, 2010, 10:55 AM
  4. Cannot connect to 6661,2,3 ports
    By ap7256 in forum Adapter APIs
    Replies: 3
    Last Post: October 23rd, 2007, 11:02 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
All times are GMT +1. The time now is 10:27 AM.