在我的公司,我们使用Windows Server 2003来承载各种必须始终运行的关键服务。
其中一些服务通过C#代码执行“DOS”命令。 一个命令是一个简单的batch file,用于获取FTP服务器上的一系列文件,另一个命令是一个简单的第三方工具,它将文件转换为专有的XML格式。 这些命令是完全不相关的,只有一些使用外部IP资源。
这已经运行了大约一年没有问题,但是,当我们将服务器移动到一个新的托pipe中心后,我们现在定期看到这些命令失败。 他们根本没有在给定的时间框架内返回。 其他命令如Nagios NPRE_NT也在事件日志中失败:
NRPE_NT:[命令没有输出可用]的错误返回码:128
使这些命令正确执行的唯一方法是重新启动服务器 – 但过了一段时间,问题再次出现。
我认为这可能是一个硬件问题,但我缺乏正确做这个诊断的技能。
如果是c#,并且已经移动到另一台服务器,则可能需要检查.net的版本,并确保您用来调用函数的方法没有更新/更改
这可能是新的服务器比原始服务器有更低的版本,甚至更新的版本。
或者,您是否更改了主机,但是使用了相同的物理服务器?
我们真的需要更多关于你的情况的信息。
首先要检查的是,你有正确的.Net运行时。 您还应该检查交互式调用的应用程序/脚本的行为,以确保它们按预期运行,并且不会抛出任何错误。 你知道他们是否干净地退出,他们是否清理他们正确使用的任何临时文件/资源句柄? 如果存在networking依赖性(如FTP呼叫),那么这些命令是否能够从新位置快速完成,从而不会导致多次呼叫堆叠? 与任务pipe理器/进程资源pipe理器快速检查,看看是否有这些进程意外运行的多个副本也是一个好主意。