1

几天来,我一直在尝试使用 SQL Server Azure 作为本地 Atlassian Crowd 的数据存储,但遇到了巨大的性能问题。

例如,人群管理应用程序非常慢,几乎无法使用。

我想知道成功建立这种解决方案的人是否可以给我一些建议。

到目前为止我做了什么:

  1. 在本地 SQL2008R2 数据库上设置本地 Atlassian Crowd 2.4.2
  2. 编写数据库脚本并在 azure 数据库上运行脚本(无法直接在 azure 上设置,因为设置脚本错过了表 hibernate_unique_key 上的 azure 强制聚集索引)
  3. 将强制聚集索引添加到 azure hibernate_unique_key 表
  4. 使用 ssl 设置 jdbc 连接

我将人群连接到数据库没有问题,但一切都很慢。人群启动需要大约 5 分钟,而使用本地 sql 服务器需要大约 20 秒。到人群管理 Web 控制台的每次往返都需要大约 30 秒。

我的数据库小于 1Mb。azure 中的查询执行摘要不显示任何有问题的查询。

我忘了提到 SQL Azure Db 对 SQL Server Manager 或本地 .Net Web App 的反应性很强

我尝试了 jtds jdbc 驱动程序和 MS JDBC 驱动程序 4.0,两者都具有数据加密功能。我尝试了人群提供的两种sqlDialect。它保持非常缓慢。

我尝试按照 MS JDBC 4.0 驱动程序(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime、KeepAliveInterval、TcpMaxDataRetransmission)的说明为 Azure 设置特殊注册表项

也许它来自:

  • 我不是从 Azure 上的人群完成的干净设置开始的事实(因为聚集索引问题)
  • Sql Azure 使用 UTC 时间,使“某事”每次都过期。

如果有人对这个问题有建议,我会很高兴。

4

1 回答 1

1

抱歉 - 我没有直接使用 Crowd 的经验。

我在这里可能会遇到麻烦,但是十分之九的情况下,远程安装的客户端应用程序在针对 SQL 数据库的基本性能测试(这就是现在所说的方式)失败时,应用程序层非常健谈(或非常笨重),有几十个或每个屏幕/功能的往返次数更差,或者一直返回所有记录。这通常发挥作用的原因是由于 SQL 数据库通过一个通常比本地网络慢的网络链接很远,而且在它之上的流量总是加密的(意味着有更多的数据包要转移)。

除了使用更好的设计重写应用程序之外,解决此类问题的唯一方法是尝试将 Crowd 控制台部署在云中的 VM 中,与 SQL 数据库实例位于同一数据中心。那时,您的控制台将与您的数据库在同一个网络上,如果我的理论成立,它应该会快得多。

于 2012-09-24T22:49:59.047 回答