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