1. Chris Zakrewsky
  2. Valentina Server
  3. Thursday, October 03 2019, 01:10 PM
  4.  Subscribe via email
Hi,

After updating several (virtual) machines running Win10 to VServer 9.6, one of them is experiencing a weird behavior:

After connecting VClient to VServer on the same machine via SSL everything is working OK (reading tables, etc.) until VClient issues REINDEX DATABASE (which takes a few seconds to complete).

At this very moment an exception is triggered with Error 0x6000 and the VClient is forcibly dropped.
What can generate this error?

I am attaching two screenshots, one with our log file on the VClient side and another from vlog.
Both are showing the very same moment.

Cheers,
/Chris Z.
Attachments (2)
Comment
There are no comments made yet.
Chris Zakrewsky Accepted Answer
Thanks a lot Ivan for your time, this explanation is very helpful.

This could be a theme for a separate chapter Tuning Your Deployment in Performance Guide to Valentina :)
Comment
There are no comments made yet.
  1. more than a month ago
  2. Valentina Server
  3. # 1
Ivan Smahin Accepted Answer
Well, we have 3 different "timeouts" on vServer side and 1 timeout on vClient side.

vServer:
1. MaxIdleClientTimeout - "idle client" - that one who is connected but send nothing to vServer. vServer will drop such connection after this timeout.

2. MaxConnectionTimeout - how many seconds vServer waits for connection's "login" procedure. Assume, there are no available vServer's connections (due to vServer's license), and there is a new connection trying to "login". vServer has been waiting MaxConnectionTimeout seconds (probably some connection will be freed during this waiting) before terminate such a "login" procedure. I see wrong comments in the ini - will be fixed.

3. MaxTransferTimeout - how many seconds vServer may spend in the particular sending/receiving data to/from the particular client. It seems to be for testing only.

vClient:
1. The timeout in VConnection constructor. This is about - how many seconds vClient will be waiting sending/receiving any data to/from vServer without any progress on the "physical" socket's layer before closing the connection (initiated by vClient).



---
- DisableDNS - is not related to any timeout setting, it is about DNS resolving.
- vServer's MaxConnectionTimeout and vClient's timeout.
MaxConnectionTimeout is about "login" procedure only, but vClient's timeout is for any data transferring during whole connection life. Yes, if vClient's "login" procedure gets into MaxConnectionTimeout on vServer side, it may take at least MaxConnectionTimeout and vClient may disconnect (due to the own connection timeout) because vClient is reading socket now and there is no data... So, formally, yes, MaxConnectionTimeout should be <= vClient's timeout.
Comment
There are no comments made yet.
  1. more than a month ago
  2. Valentina Server
  3. # 2
Chris Zakrewsky Accepted Answer
Forgot to say: Thank You! -- your advice resolved the problem.
Comment
There are no comments made yet.
  1. more than a month ago
  2. Valentina Server
  3. # 3
Chris Zakrewsky Accepted Answer
Hi Ivan,

There are now 4 different timeout values, three of them in INI file and one in VConnection constructor.
I tried to gather scattered bits of info about all of them, but their inter-dependencies still are not all too clear for me.

So far I came up with:


; Specifies the IDLE timeout in minutes for a client.
; On timeout VServer will disconnect that client.
; This option protects VServer from users, who have forgotten to disconnect and went for a cup of coffee or something.
; 0 - means infinite timeout.
MaxIdleClientTimeout=20

; Specifies the CONNECTION timeout in seconds for a client.
; Applies specifically to the time between queries.
; The connection time out is about client inactivity.
; Any command sent to the server is a client activity, and not only SQL queries.
; Connecting to the server user may be held until either timeout exceed or some connection have been freed.
; 0 - means no timeout.
MaxConnectionTimeout=60

; Specifies the TRANSFER timeout in seconds for a client.
; It's the time limit for sending/receiving any single command or result to/from the server.
; So it would be depend on both - network speed and data size.
; When expired causes connection termination, and yes, it would be "just disconnected" for vClient.
; But this param is used mostly for testing - not in real life.
; 0 - means no timeout.
MaxTransferTimeout=0


Constructor
( ...
inTimeOut as Integer = 5,
...
)
inTimeOut - TimeOut in seconds to wait for a Server response.
inTimeOut parameter specifies how much seconds we want to wait while DNS is looking for the required server. If during this N seconds server is not reached by TCP/IP protocol then we get “stream error” message.


You are talking about the last one.
Should it always be smaller than MaxConnectionTimeout? The same?
Or it doesn't matter?

How does it play along with:


; If 1 then disables DNS resolving. 0 - Enabled.
DisableDNS=1


I'm only trying to understand how those important parameters affect each other.
Cheers!
Comment
There are no comments made yet.
  1. more than a month ago
  2. Valentina Server
  3. # 4
Ivan Smahin Accepted Answer
You should try to increase timeout here - in VConnection constructor:

Constructor(inHost as string, inUserName as String, inUserPassword as String, inPort as Integer = 15432, inTimeout as integer = 5, inOptions as string = "" )
Comment
There are no comments made yet.
  1. more than a month ago
  2. Valentina Server
  3. # 5
  • Page :
  • 1


There are no replies made for this post yet.
However, you are not allowed to reply to this post.