Home  Products  Support  Company
You are here: Support  FAQ

StateMirror: Frequently Asked Questions

Q. By default, StateMirror service runs under the "Local System" account. Our organization's best practices do not encourage using this account for running services. Can we use another account for StateMirror?

A. Yes. Consider using an account with a reduced privilege level. The Network Service built-in account type is a good candidate.


Q. Our web application stores a lot of data in Session objects. After analyzing local network traffic, we realized that StateMirror uses small (1-2kb) packets when transferring Session objects. Is there a way to make StateMirror use bigger packets so it works faster?

A. Yes. Check out StateMirror\Common\UdpDatagramLength registry setting. By default, it limits packet size to 1500 bytes, but in most cases you can safely increase it. See the "UDP Datagram Length" section in the "StateMirror - Advanced Settings" help topic.


Q. In StateMirror Explorer, I selected a StateMirror Server and pressed the "Reject Items" button. The number of objects stored on the server decreased, but did not reach zero, so I am not sure I can shut down the server without losing any session data. Is StateMirror working properly?

A. Yes. After the server receives the "Reject Items" command, it tells all Clients to store the session objects on the other Servers. If there are enough StateMirror Servers available, StateMirror Clients delete their session objects from this Server and move them to other Servers. The re-distribution occurs only when the web application actually saves the Session object after page generation. If the user does not make any HTTP requests that require a session state to be saved, ASP.NET does not invoke StateMirror Client and the session object remains intact until it expires. The expiration timeout is usually taken from the <sessionState ... timeout="..." /> property in web.config file. When the session object expires, StateMirror Server removes it from storage automatically. When all Session objects on the Server are re-distributed or expired, StateMirror Explorer shows a zero item count for this Server and you can safely take it offline.


Q. My StateMirror-enabled application seems to work very slowly: page generation takes too long. When I switch to ASP.NET out-of-proc session state managenment, the application works without delays. What's wrong?

A. One of the reasons may be the StateMirror trace logging configuration. If you are not using StateMirror TraceLogger, set StateMirror\Trace\TraceLoggerIp registry value to an empty string on every machine that runs StateMirror Server or Client. If you are using TraceLogger, make sure this value points to the working machine running TraceLogger. Otherwise, StateMirror components that write to the TraceLogger try to establish a connection to a non-existent machine or offline service and this may dramatically slow down the application.
Another possible reason is a partially unreachable StateMirror Server that sends heartbeat messages, but does not accept connections on StateMirror ports. This is especially applicable on StateMirror Servers that run Windows Internet Connection Firewall.


Q. Why should I use tracing?

A. Tracing can be extremely helpful when StateMirror works in the way you don't expect it to. In the production environment, our recommendation is to set trace level to 2 (Logical errors, Connectivity problems) or to the more verbose level 3 (Report Errors and Warnings).


Q. Why TraceLogger? Isn't the EventLog good enough?

A. If you want StateMirror components to occasionally write trace messages to the local machine, EventLog is good enough. If you want to keep a centralized log that receives trace messages from multiple machines running StateMirror components, StateMirror TraceLogger can be a better option because:
- The performance improves by sending a short TCP message that is faster than calling the EventLog API on the remote machine;
- It is easier to use because you do not have to set up special privileges for the accounts that your StateMirror components run under.


Q. Can I install StateMirror on a machine running Windows Internet Connection Firewall?

A. Yes. But make sure that correspondent ports are available. For example, the machine running StateMirror Server must have the following ports open (assuming StateMirror uses default port numbers):

Service name: StateMirrorClientToServer
IP: .
Type: UDP
External port: 7125
Internal port: 7125

Service name: StateMirrorServerToClient
IP: .
Type: TCP
External port: 7126
Internal port: 7126

Service name: StateMirrorCtrl
IP: .
Type: UDP
External port: 7127
Internal port: 7127

For full list of connection types used by StateMirror, see the "StateMirror Connection Types" help topic.


Q. Does StateMirror support application state caching?

A. Yes. Starting from version 1.2, StateMirror is capable of storing application state objects. Please see StateMirror setup instructions for details.


Q. Does StateMirror trigger call my Session_End event handler?

A. Yes. Starting from version 1.2, StateMirror can trigger ASP.NET Session_End event. See "StateMirror - Advanced Settings" help topic for details.

NewsTravelFast.com - a new feed aggregator that provides FAST, SIMPLE and FREE access to your favourite information channels. News, blogs, forums - any source that supports RSS or ATOM syndication.