首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Winsock closesocket()性能(本地计算机,127.0.0.1):为什么它在一些计算机上如此缓慢,而在另一些计算机上却超快?

Winsock closesocket()性能(本地计算机,127.0.0.1):为什么它在一些计算机上如此缓慢,而在另一些计算机上却超快?
EN

Stack Overflow用户
提问于 2011-10-08 18:29:52
回答 2查看 480关注 0票数 0

我正在努力解决一个与关闭C#代码中的数据库连接有关的奇怪的性能问题。我们在本地计算机上使用一个名为Raima的数据库服务器(只有本地TCP连接127.0.0.1到同一台计算机上的本地数据库服务器,而不是跨局域网),通过它的本地Raima API (不是ADO.NET,只是一个.NET包装器)。

问题是,在许多计算机(高性能双核或四核计算机)上,大多数时间需要大约120ms-250ms (例如,在.NET C# web服务中为120ms,在.NET C# Windows应用程序中为250ms ),而在其他计算机上,关闭时间仅为4ms (稳定)。令我困惑的是,在一些计算机上,例如,大多数时间是120ms,但偶尔可能会跳到4ms。

我们的数据库供应商(Raima)告诉我们,他们对此无能为力,因为这些速度减慢是由Winsock方法closesocket()引起的。

所以我的问题是,Winsock closesocket()真的会在本地计算机上造成这种速度减慢吗?或者,归根结底,这仅仅是数据库供应商和他们缓慢的数据库驱动程序/服务器的问题?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2011-10-08 19:37:21

我建议您使用性能工具/压力测试工具测试您的raima (您称之为raima);使用网络工具测试您的网络;使用其他数据库(免费版的SQL server、IBM DB2、MySQL、Oracle和其他数据库)安装您的计算机,并尝试连接它并计算其性能。AFAIK它不是winsock实现,它是计算机配置。如果所有数据库都变慢了,那么你可以怀疑是winsock。如果一切都很慢,也许你可以提一下升级硬件。如果除了raima以外的所有东西都很快。你可以怀疑raima数据库太慢了。如果你像往常一样在连接上遇到困难,只需更换你的局域网电缆。

票数 0
EN

Stack Overflow用户

发布于 2012-05-30 01:08:11

我是来自Raima的杰森。

性能问题出现在closesocket()中,并解释说我们对此无能为力。之后,我们的一位工程师立即发现我们使用了SO_LINGER选项,该选项会导致closesocket()阻塞,直到所有未完成的数据都已发送完毕才返回。我们删除了此选项,并在2011年10月11日发送了一个补丁。在关闭SO_LINGER的情况下,closesocket()函数仍将在关闭套接字之前发送未完成的数据,但它可能会在此操作完成之前返回。该补丁在大多数情况下提高了性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7696206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档