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 或交换机上的内置监控来查看稍后会发生什么。我认为它不会接近硬件施加的物理传输限制。
不知道通过特定端口记录字节的任何内置方法,因此如果您确实需要这种级别的详细信息,Wireshark 是一个不错的选择。
如果服务器专用于 SQL Server,我有理由相信网络上的大部分流量是相关的,因此性能计数器Network Interface\Bytes Total/Sec应该为您提供广泛的指导。
老实说,这是我书中的一个静音点。除非托管服务器的演出端口有大量且荒谬的额外费用,否则请接受。
据我了解,您希望监视托管在 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 链接饱和,所以我不认为这是一个古怪的场景。不过,我支持的许多应用程序设计得并不好,因此如果您使用常识性的设计原则(例如不在每次页面视图中检索巨大结果),这对您来说可能永远不会成为问题。
DMVsys.dm_exec_connections具有每个连接的流量统计信息,包括发送/读取的字节数。但是每次物理连接关闭时它都会重置,并且也是吞吐量的不良指标,特别是峰值。
话虽如此,客户端和服务器之间的流量永远不应成为问题。特别是对于 web 应用程序,大的返回集无论如何都不合适。很快你就会遇到网卡中断率的问题,而不是吞吐量的问题。
然而,吞吐量将在与数据库操作相关的许多其他活动中发挥重要作用:
| 归档时间: |
|
| 查看次数: |
7398 次 |
| 最近记录: |