on 08-02-2006 12:25 PM
Hi all,
running SP16 on HPUX PA 11.11 I try to check if the server node is running and responding by
telnet
the response is:
Packet length (1702390132) bigger than the max specified!öö¿javax.jms.JMSException: Packet length (1702390132) bigger than the max specified!
at com.sap.jms.protocol.MultiPacketImpl.createPackets(MultiPacketImpl.java:160)
at com.sap.jms.protocol.MultiPacketImpl.getNotCompletePacket(MultiPacketImpl.java:106)
at com.sap.jms.server.protocol.manager.PacketManagerImpl.processData(PacketManagerImpl.java:77)
at com.sap.jms.dispatcher.JMSDispatcherFrame.parseRequest(JMSDispatcherFrame.java:509)
at com.sap.engine.core.manipulator.TCPRunnableConnection.sleepRead(TCPRunnableConnection.java:806)
at com.sap.engine.core.manipulator.TCPRunnableConnection.access$700(TCPRunnableConnection.java:26)
at com.sap.engine.core.manipulator.TCPRunnableConnection$ReadThread.run(TCPRunnableConnection.java:1140)
at com.sap.engine.frame.core.thread.Task.run(Task.java:64)
at com.sap.engine.core.thread.impl6.SingleThread.execute(SingleThread.java:78)
at com.sap.engine.core.thread.impl6.SingleThread.run(SingleThread.java:148)
Any one an idea how to change the defined package size?
On the second server node it runs fine.
Best regards,
Michael
Hi Michael,
50010 is the default port the JMS Provider service is listening to on the dispatcher nodes of the cluster. Connecting to it via telnet is not a valid operation - JMS interprets the incoming data on this port as JMS protocol communication. It expects a packet with specific structure - it interprets the value at a certain offset within the stream as the packet's length. In your case this happened to be an extremely large value (1702390132) and the JMS Provider simlpy refused to allocate memory for a packet with this size:) This is a precaution against denial-of-service attacks on the JMS port. The limitation is hard-coded (10 MB) and cannot be configured.
So pinging the JMS port is not a correct way to check server node availability. The reason you get exception on one node and on another not is that the JMS port is opened on the dispatcher nodes. I suppose you have been "successful" in pinging the server nodes.
Cheers,
Stoyan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Michael,
As I understood, you are trying to check the server availability by executing
telnet <hostname> 50010
which obviously includes port number.
What do you mean by getting this error with server0 and not with server1? How do you ping one particular cluster node? A remote request passes through the dispatcher and it on its turn dispatches the request to one of the available server nodes behind it. The exception you are getting accessing the JMS port is thrown on the dispatcher (see the stack trace), it does not reach any server.
I don't think you can check the availability of a particular server node by any remote request.
You can check the general cluster availability by pinging some safe and well-defined port as the HTTP port (50000). You can also create and deploy a servlet and "ping" the cluster by accessing it.
Regards,
Stoyan
Hi Stoyan,
well, doing
telnet hostname 50010 gets the error
telnet hostname 50020 runs fine
so server0 (port xxx10) gets the error but not server1 (port xxx20).
ping is not dealing with a port so I do not do a ping but a telnet on a defined port.
ping will result by the server and not by the j2ee in no way
Best regards,
Michael
Hi Michael,
When I said "ping", I meant the telnet access, not the ping DOS command, sorry.
But you are wrong about the telnet command and the ports.
The telnet command syntax is
telnet [host [port]]
and 50010 in your case is definitely interpreted as port number. The correct usage of the telnet command should be
telnet host 50008
as 50008 is the telnet port.
Second, you make an incorrect association between cluster elements (server0, server1) and port numbers (50010, 50020). There is absolutely no relation between these.
You cannot telnet to a single server node. You always telnet to the dispatcher, and only after you have established a telnet connection to the dispatcher, you can "jump" to particular server nodes by the J2EE telnet commands
jump 0
jump 1
etc. If you do not believe me, open the SAP Management Console (MMC) and you will see that the "J2EE Telnet" command is available only right-clicking dispatchers, and on the servers it is disabled. Server nodes are not directly accessible from the "outside world", they are hidden behind dispatchers.
It is the dispatcher that has open ports and the suffix of the port number is related to the port type/service (and it has nothing to do with index numbers of server nodes):
50000 is the HTTP port
50004 is the P4 (RMI) port
50008 is the telnet port
50010 is the JMS port
and so on.
Regards,
Stoyan
User | Count |
---|---|
91 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.