服务热线
ASP语言简单易懂,是门不错的变成语言。唯一的缺憾就是 ASP不支持多任务。比如网站要执行一个耗时的远程操作,在执行过程中,获得远程执行结果之前,ASP的页面将一直卡着,这时候其它客户要访问此ASP站点,都将进入等待队列,除非这个远程操作执行完毕或者超时。显而易见,如果客户多的话,这将严重破坏客户体验。那么有没有好的方法进行多任务呢。
最简单节省的一种方式(前提你必须有云服务器或独服),在IIS管理器中建立多个虚拟站点,每个站点都有一个独立的进程池,然后将这些站点的目录都指向到这个 ASP目录。
然后通过 搭建 IIS ARR(Application Request Route) 来实现负载均衡。搭建的方法网上很多,百度一下就行这里就不多说。
这里主要说一下 ARR 对ASP的弊端,就是无法实现SEESION共享,之前看了很多资料,都是说 ASP.NET 下 SEESION共享 支持多种方式,测试后才发现这个完全不支持 ASP程序,只对.ASPX网站有效。所以,如果ASP站点需要登录等Session操作,不建议用ARR做负载。因为会导致站点访问过程中,登录状态时有时无。大约2个站点 均衡的时候还行,再多就很明显的出现刷新页面的时候 登录状态时有时无的问题了。而且ARR下也不支持 https反向代理。
我这里还是推荐搭建做Nginx 下的IIS 负载均衡,效果不错,也是在IIS管理器中建立多个虚拟站点,每个站点都有一个独立的进程池,然后将这些站点的目录都指向到这个ASP目录。这样,同一个ASP网站,实现多个 独立进程池独立运行,同时可以做 http和https 反向代理来实现负载均衡。当A 访问站点时,可能用的是独立进程池1 ,当B访问时,启动的可能就是独立进程池2 ,从而避免了单一进程池执行耗时操作时,其它客户的访问都进入等待队列的尴尬。这方面可以百度下 Nginx IIS 负载均衡 之类的,也有很多教程,这里只说思路,就不一一讲解了。测试发现即使不做session共享,这种模式下登录也挺稳定的。asp下的Seesion共享已有牛人搞出了 asp版的redis ,不妨看看 https://jiezhe.net/post/51.html
如果你对 ASP开多线程 实现多任务运行 也迷茫,希望这篇实践思路能给你带来些许启发!