0

我们有一个三层 Java 应用程序,其中 Jboss 作为应用程序服务器,MS Sql Server 作为数据库服务器。我们使用 jdbc type 4 从 App 服务器连接到 Db 服务器。

我们已经看到,在同一台机器上运行 Jboss 和 DB 服务器,如果它们在不同的机器上,性能会提高约 50%。如何解释这么大的差异?运行 Jboss 和 DB Server 的机器是非常好的工作站(具有最好的英特尔 CPU),网络是具有商业标准基础设施的 1Gb 以太网。

您认为这是我们网络的问题(延迟、吞吐量……)还是有其他一些原因可以解释这种差异?

4

3 回答 3

2

以下因素可能会影响上述情况下的性能,

1)访问数据库的网络延迟:在本地机器上,它会小于 1 毫秒。如果数据库服务器和应用服务器位于不同的位置,延迟会更多。如果您为服务特定请求进行“n”个 DB 调用,则延迟将是 n * 2 * 延迟。

解决方案:少打电话。对参考数据集使用缓存。

2)访问应用服务器的位置:如果用户位于美国并且应用服务器在印度,那么网络延迟将在 200 毫秒左右。如果页面上加载了很多 css & js 文件,根据所使用的浏览器,会导致很多延迟。

解决方法:将所有js文件合并为一个文件。将 GZip 用于 js 和 css。缩小 JS。有效使用浏览器缓存。

3)如果以上两个都不是瓶颈,检查应用部署服务器的CPU、内存和磁盘速度。

于 2012-04-20T06:52:32.827 回答
1

好吧,有太多的可能性:1)网络设置 2)防火墙 3)通信服务的实施 4)等等。

我建议禁用所有服务、选项、过滤器,然后尝试一一启用。如果这不起作用,请检查您的代码。

祝你好运,这并不容易!

于 2012-04-20T06:47:29.883 回答
1

在不知道您的配置的情况下,SQL Server 默认使用命名管道作为传输。在本地,这将是比 TCP/IP 更快的内存进程内通信。如果远程,管道将需要通过 TCP/IP 传输,这增加了它在 TCP/IP 堆栈(以及实际传输)上下编组/解组的开销。

您说您使用 TCP,但可能是您实际上在本地使用命名管道。您的连接字符串是什么样的?

于 2012-04-20T07:09:17.733 回答