解决多用户远程桌面连接服务器情况下客户端访问异常问题
金蝶云社区-lz_xiaohe
lz_xiaohe
0人赞赏了该文章 3255次浏览 未经作者许可,禁止转载编辑于2017年09月01日 11:39:16

使用产品
金蝶KIS账务平台V14.0

应用场景

在服务器上建立了多个用户,并且这些用户通过桌面桌面直接访问服务器。

服务器环境


服务器一般不用,显示器一般也是关闭的,电源管理未设置休眠、关闭硬盘之类的设置。

问题现象

在服务器登录并正常运行系统管理后,客户端能正常使用。但是过一段时间,客户端会自动连接不上服务器:


客户端访问服务器的共享文件、Ping等都正常。
如果这时在服务器本机登录或通过远程桌面登录,打开服务器桌面时,金蝶账务平台的系统管理程序在转圈,显示正在登录中


信息加载中

大约5秒后,客户端登录又自动好了。如果不打开服务器桌面,就不行。此问题持续了1个多月,每次客户连接不上了,就给服务人员打电话。开始时,出现问题就登录一下服务器,但是长久下去,每天几次电话都是这个问题,服务人员受不了,客户使用者也受不了了。

通过任务管理,发现有时会存在多个系统管理的进程:

问题分析
此问题在7月前未发生过,以前一直使用正常的。现在的问题现象看,是系统管理在运行一段时间后,被中断运行了,导致客户端在连接时无法访问到服务器资源,导致无法登录。
常规服务器程序、服务、设置等检查,检查不出问题在哪里。
服务器电脑登录上,问题又不重现;问题重现了,如果不登录服务器电脑,又看不到服务器电脑情况。
对于不是非常精通操作系统的使用者来讲,这问题要分析处理,找到根源,太难了。

处理方法

方法一:利用计划任务解决服务器系统管理程序被中断运行的问题
既然问题存在,又一时找不出原因,那么,换一个解决问题的思路:通过计划任务配置,让系统在异常时自动能调用系统管理登录,此问题应该可解决。

用户大约每天8:30上班工作,于是,在服务器端的计划任务中,建立了一个任务,并设置了三个触发事件--启动时、当从用户会话断开连接时、每日。如下图:



所有任务设置为适用于【所有任务】,异常时间隔1分钟无期限的调用,示例:

启动时事件:


当从用户会话断开连接时:


每日事件:



在操作中,指定系统管理的程序及路径,示例如下:

注:上述系统管理的路径及程序信息,可通过系统管理程序属性获得

在完成上述配置后,发现计划任务总是处于【准备就绪】状态,运行后,再登录,又显示为【准备就绪】,后在【起始于】中指定路径后,运行计划任务,正常了。

PS:如果有其他情况,还可根据实际情况添加其他的触发器事件。

效果跟进
进行上述计划任务配置并运行后,持续跟踪了2天,未现反馈有异常情况。但是隔几天后,又反馈客户端不能正常连接了。


存在问题:在【利用计划任务解决服务器系统管理程序被中断运行的问题】这个方法下,存在一个问题:操作系统会自动检测系统管理程序是否在运行,以确保按触发器定义的条件运行系统管理,会间隔性地导致在进程中有多个系统管理程序的进程。

相关内容
Windows Server 2008 计划任务配置(任务计划程序)每分钟执行BAT
WinServer2008配置任务计划

更多内容,可访问百度


方法二:移去启动组快捷方式,手动运行系统管理来解决问题

检查操作系统的计算机用户设置,发现设置了大较多的用户,都是定义为系统管理员组成员,并且允许这些用户通过远程桌面连接服务器使用。

在操作系统的程序启动组中,有金蝶KIS账务平台系统管理的程序组(这是金蝶软件在安装时自动添加的)。一般情况下,都不会存在大量的远程用户直接远程登录服务器的情况,这样风险很大。这样就导致每次有远程连接的用户登录操作系统时,系统都会根据启动中的程序运行一次系统管理。当有多个用户分别登录时,系统管理程序就会不断运行,导致同一个程序存在多个任务进程,导致问题出现。


在这种存在多用户通过远程桌面等直接登录服务器系统的情况下,采用如下方法处理
1、从程序组中,删除账务平台的系统管理程序快捷方式,避免不同用户远程登录后操作系统又去执行一次系统管理程序;
2、手动通过程序组中或桌面快捷方式运行账务平台的系统管理程序;
3、如果已经参照前述方法建立了计划任务,需要将该计划任务禁用。(如果担心会有其他用户登录进去会误把进程中的系统管理干掉或误操作退出系统管理,也可以持续运行该计划任务。)

效果跟进
用此方法运行3天,未有任何异常反馈。


PS:此方法可推广适用于其他使用系统管理的KIS产品,比如KIS专业版V14.1及以上、KIS旗舰版V4.2及以上、KIS商贸版V7.0及以上等产品,或其他相似的应用或服务。

温馨提示:
发现很多用户都是在用这种方式实现远程(N多用户直接远程到服务器,并且具有管理员权限),这样风险非常大。
建议A做服务器,B做客户端,所有远程用户连接到B而不要连接到A。
否则任何一个用户在服务器上有任何误操作,都会影响所有人。
另外 ,请做好用户数据备份,设置自动备份方案,开启SQL的Agent服务,最好是账套数据和备份数据都不要放到系统盘中,减少突发事件带来的损失。