默认情况下,Jexus web server是以单进程模式运行的,当修改jws.config配置文件,把httpd.processes的值设置为大于1的数字时,JWS就会按指定的数量以多进程的方式并行工作。
Jexus多进程并行工作,可以更充分地利用多CPU的性能优势,提高大并发负载能力和处理速度,同时,多进程并行,也是高可用性服务的必然需求。
多进程时,需要特别注意如下两个方面:
1、不要将Session保存在进程内,即web.config中的sessionState不能配置为Inproc,应该使用同一台Session state服务器对session信息进行保存。如:可以配置为“<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" timeout="20" />”。
2、需要配置machineKey。Jexus多进程并行时,相于当多主机群集工作,因此,必须在Web.Config文件中配置machineKey。如果没有这个设置,网站就会出现诸如数据“无法验证的错误”之类的问题。下面是一个machineKey的参考配置:
<machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>
注:Jexus自带State服务,如果没有其它需求,一般不需要再配置配置其它的状态服务器。
作者:yunei 发布时间:13年04月19日 可选操作:
删除 回复作者:bluedoctor 发布时间:13年04月19日 可选操作:
删除 回复可以用这个工具直接生成:
http://aspnetresources.com/tools/machineKey
作者:yunei 发布时间:13年04月19日 可选操作:
删除 回复生成machinekey可以通过IIS7.5自动生成
作者:abeyondme 发布时间:13年04月29日 可选操作:
删除 回复还需要在程序里面添加(session操作之前)
HttpCookie ck=Request.Cookie["ASP.NET_SessionId"];
ck.Domain=".myDomain.com";
Request.Cookies.Set(ck);
不同的域名,浏览器是不传cookies的,所以,指定后,浏览器才会认为是同一个站,cookie才会进行传递。
作者:dw 发布时间:14年05月07日 可选操作:
删除 回复生成machineKey:
public static string CreateKey(int len)
{
byte[] bytes = new byte[len];
new RNGCryptoServiceProvider().GetBytes(bytes);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < bytes.Length; i++)
{
sb.Append(string.Format("{0:X2}",bytes[i]));
}
return sb.ToString();
}
使用:
validationKey = CreateKey(20);
decryptionKey = CreateKey(24);
作者:tanyh 发布时间:15年04月28日 可选操作:
删除 回复