【问题标题】:Windows Service 100% CPU with C# IMAP ChilkatWindows 服务 100% CPU 与 C# IMAP Chilkat
【发布时间】:2014-05-29 08:27:00
【问题描述】:

Chilkat IMAP 服务在几天后卡在 100% CPU 上,使用它的 Windows 服务正常执行。它每隔几天(3-7 天)就会被复制一次。

我正在使用适用于 .NET 4.5 版本 9.5.0 64 位的 Chilkat IAMP。

我通过 c# 代码中止的方式是(它在每次迭代结束时运行一次):

    if (imapCon != null)
    {
        if (imapCon.IsLoggedIn())
        {
            imapCon.Logout();
        }

        if (imapCon.IsConnected())
        {
            imapCon.Disconnect();
        }

        imapCon.Dispose();
        imapCon = null;  
    }

从日志中,我得到:WSAECONNABORTED 已建立的连接被您主机中的软件中止。

运行它的服务驻留在虚拟云环境中。

这是否与 Chilkat IMAP 连接的实现方式、云环境实现或我的服务(使用 Chilkat 模块的应用程序)中的某些东西有关...?

以下是 Chilkat 日志:

Dll 日期:2014 年 5 月 6 日

Chilkat 版本:9.5.0.38

解锁前缀:SNILIKIMAPMAIL

用户名:WIN-OCJD4A0985E:SYSTEM

架构:小端; 64位

语言:.NET 4.5 / x64

详细记录:0

列表邮箱:

bSubscribedOnly:0 参考:

邮箱:*

邮箱名称中的转义引号和反斜杠...

utf7EncodedMailboxPath: *

getCompleteResponse:

    WindowsError: An established connection was aborted by the software in your host machine.

    WindowsErrorCode: 0x2745

    numBytesRequested: 5

    Failed to receive data on the TCP socket

    Failed to read beginning of SSL/TLS record.

    Failed to read incoming handshake messages. (3)

    (leaveContext)

Client handshake failed. (3)

(leaveContext)

连接失败原因:0

(leaveContext) 失败原因:0

连接失败。

(leaveContext) 登录:

Dll 日期:2014 年 5 月 6 日

Chilkat 版本:9.5.0.38

解锁前缀:SNILIKIMAPMAIL

用户名:WIN-OCJD4A0985E:SYSTEM

架构:小端; 64位

语言:.NET 4.5 / x64

详细记录:0

登录:**

连接类型:SSL/TLS

在套接字上发送错误 (1)

SocketError: WSAECONNABORTED 已建立的连接被 主机中的软件。

有关更多信息,请参阅此 Chilkat 博客文章: http://www.cknotes.com/?p=91

send_size: 90

发送 TLS 消息失败。

发送登录命令失败

失败。

【问题讨论】:

  • 这是一道编程题吗?如果是这样,问题是什么?
  • 我写了它并举了一个例子我如何清理连接......引用:这是如何实现 Chilkat IMAP 连接的问题,云环境实现或我的服务中的某些东西(使用 Chilkat 模块的应用程序).​​..?顺便说一句,Chilkat 是一个编程库……

标签: c# sockets .net-4.5 imap chilkat-email


【解决方案1】:

如果 Chilkat 方法调用永远不会返回并使用 100% 的 CPU,那么您将无法获取 LastErrorText 的内容(这是您提供的 Chilkat 日志)。您拥有 LastErrorText 的事实表明 Chilkat 方法调用已返回,然后您的应用继续显示 LastErrorText。

我的猜测是您的应用程序有一个循环,其中涉及与 IMAP 邮件服务器通信的 Chilkat 方法调用通常会成功(与服务器通信花费正常的时间),但由于某种原因,方法调用开始返回立即以失败状态。那时,我怀疑您的应用程序可能处于反复调用 Chilkat 方法的紧密循环中。 100% CPU 利用率可能是由应用程序中的循环引起的,而不是由调用 Chilkat 方法中的代码引起的。

【讨论】:

  • 我在 GetLastError() 的结果上添加了“错误检查 ifs” - 对于每种情况它可能会下降,并发现有时环境中存在网络故障 - 现在成功处理它们。谢谢...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 2023-03-20
  • 2021-07-23
  • 1970-01-01
相关资源
最近更新 更多