如何解决并发登录和并发会话有什么区别?
背景信息
使用具有Hikari连接池的Spring应用程序连接到关键业务Azure SQL Server实例。
limitations on Azure's side of the DB instance are:
- 200名工人
- 200次登录
- 30k会话
我们有3台应用服务器部署了Hikari CP。
据我所知:
- 应用程序的Hikari连接池正在根据需要打开新的TCP连接,并将其池化以存储spring数据/ hibernate /等等。
- 应用程序POV中的SQLConnection正在使用Connectionstring建立与服务器的TCP连接,通过该连接将传输协议数据(包括身份验证)和sql查询。
- 根据上面列出的限制,TCP连接的数量不受限制
- 据我了解,工作人员是实际上对数据库执行SQL查询并检索结果的进程/线程。
- 如果一个查询/语句可以并行化,则可能使用多个工作程序
- (尽管没有找到文档)很容易看出,登录名受工作人员的限制,因为无论谁登录并想与数据库进行交互,都需要一个工作人员来执行随附的语句登录用户的安全上下文
- According to this:”会话是指一次允许与SQL数据库的并发连接数。可以将工作进程视为SQL数据库中正在处理查询的进程。最大数量会话数和允许的工作者数取决于数据库的服务层。”
问题
- spring应用程序可以使用相同的用户名和密码进行总共约30k个连接或约200个连接(假设没有其他应用程序连接到数据库)吗?
- 在这种情况下应如何解释Azure SQL登录/ Azure SQL会话?
注意:我知道我可以通过启动N个应用程序来连接和监视行为来进行测试,但令我感到沮丧的是,我如何找不到可以帮助我回答问题的相关文档。为我自己提问。
解决方法
您对工人的理解是正确的。
登录名是服务器的用户actively authenticating。遇到此问题非常罕见,但是如果您的体系结构涉及大量的断开/重新连接类型操作,则可能会发生这种情况。用户名/密码在这种情况下无关紧要。您只是不想尝试同时启动200个应用程序实例。
尽管很少遇到登录限制,但需要注意会话限制。 Hikari在池中创建的每个连接都被视为Azure SQL端上的会话。话虽如此,只有3台服务器,您就可以在每个池中打开1万个连接,而且还不错。除非您采取措施阻止Hikari在需要时正确关闭连接,否则现在对您而言可能不是问题。我对Hikari不太熟悉,因此无法为您提供导致此问题的具体示例。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。