Networking 网络中的性能因素

Networking 网络中的性能因素,networking,performance,unmanaged,managed,Networking,Performance,Unmanaged,Managed,有时我只是在兜圈子,想知道添加一个线程队列,用一个工作线程处理用户请求,用一个线程查询和更新数据库服务器,是否会有效地利用资源,它将如何影响应用程序的总体性能,即每秒回复的数量 然而,由于我只是一个业余爱好者,没有真正的商业项目,我通常会因为想得太多而放弃。我进行了研究,但没有找到相关的答案 那么,在托管和非托管环境中编写高性能I/O(特别是网络)应用程序时,还应该考虑哪些其他因素呢?对您来说,最好的研究领域之一是操作系统概念。许多计算机科学学位都提供这方面的课程 听起来您的机器上有一个假设的应

有时我只是在兜圈子,想知道添加一个
线程队列
,用一个
工作线程
处理用户请求,用一个线程查询和更新数据库服务器,是否会有效地利用资源,它将如何影响应用程序的总体性能,即每秒回复的
数量

然而,由于我只是一个业余爱好者,没有真正的商业项目,我通常会因为想得太多而放弃。我进行了研究,但没有找到相关的答案


那么,在托管和非托管环境中编写高性能I/O(特别是网络)应用程序时,还应该考虑哪些其他因素呢?

对您来说,最好的研究领域之一是操作系统概念。许多计算机科学学位都提供这方面的课程

听起来您的机器上有一个假设的应用程序在请求数据库,您很感兴趣的是,线程化这个假设的应用程序是否会提高其性能

作为一名性能测试人员,我可以告诉您,系统性能是关于权衡和优先级的。i、 e.您希望用户界面具有超级响应性,还是希望使用绝对最小的系统资源

在这种情况下,您很幸运,您想要平衡的资源不会相互竞争。数据库端就是我们所说的I/O,线程端就是CPU。应用程序倾向于I/O绑定或CPU绑定,有几个两者都是。在I/O绑定的应用程序中,在更快的CPU中切换不会加快很多速度,反之亦然

如果您添加额外的线程,这将有助于当且仅当您的网络有时间进行额外的网络IO时。添加额外的线程不会以CPU无法处理的方式增加CPU的负载,因为将向数据库发出请求,线程将阻塞。一旦请求返回到您的机器,就会抛出一个中断,您的线程将从等待队列中退出


真正的问题是:您希望对数据库有多好?

您应该运行基准测试,找出哪些方法更快,瓶颈在哪里。我假设“托管环境”指的是Microsoft的“托管代码”。这不会影响任何事情。