如何监视 SQL Server 在端口 1433 上使用的带宽?

QFD*_*Dev 4 monitoring sql-server network

我有一台运行 .NET Web 应用程序和 SQL Server 数据库(2008 标准)的服务器。我计划将数据库移动到单独的服务器上,但为了提供网络硬件,我想对 Web 应用程序和数据库之间的数据吞吐量进行基准测试。1433端口可以内部监控吗?如果是这样,是否有任何 Windows 2008 R2 原生工具可以做到这一点,或者我是否需要一些像 WireShark 这样的 3rd 方应用程序?我的连接字符串正在使用 引用数据库server=localhost,是否仍然可以访问 1433 以查看此端口上使用的带宽?

本质上,我试图确定在 Web 服务器和数据库服务器之间是否需要 Gbit 或 100 Mbit 连接。对此的任何想法将不胜感激。

7 月 8 日更新

我对上述内容进行了讨论,因为我意识到这在很大程度上无关紧要。出于某种原因,我认为 100 Mbit 和 1 Gbit 交换机之间的成本差异很大。只有cheapo 家庭用户交换机是100 Mbit。正如其他人指出的那样,Wireshark 不会在同一台机器上的 IIS 和 SQL 服务器之间获取活动。我现在正在安装一个 1Gbit 托管交换机,我将使用 Wireshark 或交换机上的内置监控来查看稍后会发生什么。我认为它不会接近硬件施加的物理传输限制。

Mar*_*ith 8

不知道通过特定端口记录字节的任何内置方法,因此如果您确实需要这种级别的详细信息,Wireshark 是一个不错的选择。

如果服务器专用于 SQL Server,我有理由相信网络上的大部分流量是相关的,因此性能计数器Network Interface\Bytes Total/Sec应该为您提供广泛的指导。

老实说,这是我书中的一个静音点。除非托管服务器的演出端口有大量且荒谬的额外费用,否则请接受。


Jam*_*olt 6

据我了解,您希望监视托管在 IIS 和 SQL Server 中的 Web 应用程序之间的网络流量,这两个应用程序都在同一台服务器上运行。这将因以下几件事而变得复杂:

  • 如果您的 Web 应用程序连接到 localhost 或 127.0.0.1 上的 SQL Server,则大多数数据包嗅探器不支持通过环回接口监视流量,就像您正在使用的那样。微软的消息分析器是一个例外,但它是测试版,似乎没有太多的可视化或分析工具,而且似乎不能导出为网络嗅探器可以读取的格式,具有不错的吞吐量分析工具。

  • 如果您使用共享内存或本地命名管道而不是 TCP 连接到 SQL Server,则无法分析流量。

  • Wireshark 也不知道数据包是从哪个进程 ID 发送或接收的,这可能是一个问题,具体取决于您的过滤要求。

不过,与其他网络嗅探器相比,Wireshark 具有良好的可视化和分析工具,包括吞吐量图和对话统计。我过去需要过滤进程 ID 的做法是使用 nmcap 或网络监视器进行捕获,然后导入到 Wireshark 进行分析。但是,如果您通过环回连接,或者通过本地命名管道或共享内存进行连接,那么这些都不起作用。

我同意建议,如果可能的话,即使你不需要它,也只需要一个 1 gbps 的交换机。如果您现在不需要它,以后可能会用到,并且在您的应用程序运行良好时以计划的方式升级会更容易,而不是在网络饱和的紧急情况下。

每年有几次我遇到一个 Web 应用程序,它设法使到数据库服务器的 100mbps 链接饱和,所以我不认为这是一个古怪的场景。不过,我支持的许多应用程序设计得并不好,因此如果您使用常识性的设计原则(例如不在每次页面视图中检索巨大结果),这对您来说可能永远不会成为问题。


Rem*_*anu 5

DMVsys.dm_exec_connections具有每个连接的流量统计信息,包括发送/读取的字节数。但是每次物理连接关闭时它都会重置,并且也是吞吐量的不良指标,特别是峰值。

话虽如此,客户端和服务器之间的流量永远不应成为问题。特别是对于 web 应用程序,大的返回集无论如何都不合适。很快你就会遇到网卡中断率的问题,而不是吞吐量的问题。

然而,吞吐量在与数据库操作相关的许多其他活动中发挥重要作用:

  • 将备份文件复制到单独的存储
  • ETL上传
  • 镜像或日志传送