问题找到了,又开始新的一轮折腾。首先,减少客户端对Service.svc文件的post请求,其次将WCF回传 的数据进行压缩处理。一番修改后,IE11下,故障依旧。于是想到了用WebService尝试下,就把某个服务修改成WebService的方式后,貌 似httpd worker不会重启了,处理不过来请求的时候,只会中断请求。既然这样,我就狠心把WCF的绑定方式由CustomBinding的方式改成了 BasicHttpBinding,然而故障还是那么的顽固存在。 经过一番测试,感觉可能是Jexus的问题,测试代码: class Program { private static ServiceClient client; private static int count = 0; static void Main(string[] args) { client = new ServiceClient(); client.GetCustomersCompleted += client_GetCustomersCompleted; int callCount = Convert.ToInt32(ConfigurationManager.AppSettings["CallCount"]); Console.WriteLine("Press begin to Call WCF Service:"); while (Console.ReadLine().ToLower() == "begin") { DoWork(callCount); } Console.Read(); } private static void DoWork(int callCount) { for (int i = 1; i <= callCount; i++) { ThreadPool.QueueUserWorkItem(CallService, i); } } private static void CallService(object state) { client.GetCustomersAsync(state); } static void client_GetCustomersCompleted(object sender, GetCustomersCompletedEventArgs e) { if (e.Error == null) { Interlocked.Add(ref count, 1); Console.WriteLine("成功调用:{0}", count); } else { Console.WriteLine(e.Error); } } } } 如果是对WebService模拟并发发起请求的时候,httpd worker不会重启,如果是WCF,httpd worker会不断的重启。没有办法只有咨询Jexus的作者宇内了。跟他描述了问题,按照他说的更新了Jexus版本,优化了Linux。最后发了个测试工具给宇内,宇内发现Jexus在处理WCF请求的时候是有点问题。在这里还是要感谢宇内那么热心的帮助我解决问题。 五、数据库迁移 数据库的迁移遇到的问题不是很多,借助navicat将数据从SqlServer导入到PostgreSQL。由于系统的业务不是很复杂,之前就采用了Nhibernate,需要修改配置文件中主键字段的映射,因为PostgreSQL中采用的是序列。之前SqlServer中一些稍微复杂点的查询是采用存储过程写的,存储过程的移植性不好,在PostgresSQL下这部分只能重新写了。 <id name="TypeID" type="Int32" unsaved-value="0"> <column name="TypeID" length="4" sql-type="int" not-null="true" unique="true" index="PK_SysAllType"/> <generator class="sequence"> <param name="sequence">sysalltype_typeid_seqparam> generator> id>
六、地图迁移由于地图服务器是单独一台,最终是用Perl + Apache来实现的,实现也挺简单的,几十行代码,就是地图引擎请求一个图片路径,将图片输出就可以了。最开始的时候,用的是Asp.net,部署在 Jexus上,但是不知道为什么某些图片始终输出不出来,最终还是放弃了。 最后附上一张系统迁移后成功后的图片: 本文地址:http://www.cnblogs.com/supperwu/p/3500024.html#!comments |