当前位置: 首页 > 知识库问答 >
问题:

提高最大池大小和性能

庾远航
2023-03-14

在我的ASP. net网站,我有一个连接到SQL服务器快速数据库。有时候我确实会犯很多错误,比如

系统。异常:超时已过期。从池中获取连接之前的超时时间。这可能是因为所有池连接都在使用中,并且达到了最大池大小。

搜索错误后,我发现可能是由于SQL Server连接未关闭。但是我已经正确地使用了SQL Server连接,并且正确地处理了它。我已使用using语句处理连接。在我的应用程序中,我在一天中的某个高峰时间收到很多请求(到SQL Server数据库的连接)。

所以我计划增加最大池大小。现在我没有在连接字符串中指定它。所以它将是100(默认)。我计划它增加到20000,这样我就不会得到错误。

那么,将最大池大小增加到这个数字会导致任何问题吗?增加最大池是否会导致性能问题?

编辑:下面是我如何在代码中使用的示例

Using con1 As New SqlConnection
    con1.ConnectionString = "" //conn string here
    con1.Open()
    doSomething()      
End Using 

Using con2 As New SqlConnection
                con2.ConnectionString = "" //conn string here
                con2.Open()
                doSomething()
            Using con3 As New SqlConnection
               con3.ConnectionString = "" //conn string here
               con3.Open()
               doSomething()       
            End Using

End Using 

Catch ex As Exception

End Try

编辑:我只是通过在我的应用程序中设置最大池大小为20000来测试,以检查最大池是否真的导致了这个问题。我以为再也不会有这种例外了。但这并没有解决问题,或者可能不是错误的原因。设置最大池后,我也得到上述错误约50次,持续3小时。所以我怀疑这真的是因为游泳池的大小?错误消息指出"这可能是因为所有池连接都在使用中,并且达到了最大池大小"。那么,是否有其他情况下显示相同的错误消息?请帮忙。


共有1个答案

戚高洁
2023-03-14

如果需要,可以增加池大小。有两个缺点:

  1. 更多的连接意味着更多的资源使用

我建议你慢慢往高处走。不要立即将池大小增加到20k。想想20k连接意味着什么:它意味着大约20k个线程(如果一个线程使用多个连接,则更少)同时执行。如果您处于该位置,则可能存在负载问题。

你为什么需要这么多的连接?对于web应用程序,通常每个正在运行的请求在同一时间只打开一个连接。在大多数情况下,几百个就足够了。

尽量缩短每个连接必须打开的持续时间。

 类似资料:
  • 当我们用来谈论核心池大小和最大池大小之间的区别到底是什么? 可以借助示例来解释吗?

  • 我正在使用ignite2.6,其中有数据流节点,从kafka消耗数据并放入Ignite缓存。服务器平均负载较高,吞吐量降低。 我已经尝试为缓存中定义的索引内联设置索引大小,这样可以提供良好的性能,但也增加了服务器内存利用率和较高的平均负载。请说明在这种情况下增加datastreamer线程池大小会产生什么影响。

  • 当容器加载时,spring boot HikariCP提供的默认连接池大小是多少? 当然,我使用下面的属性来设置最大cp大小,但是我想知道如果我们在application.properties文件中没有给出任何数字,默认的cp大小是多少。 如果我给出application.properties最大池大小为100,而我只使用20,这会影响我的应用程序性能吗?

  • 我使用的是SpringBoot2.0。3释放。我想增加HikariCP的最大池大小,默认情况下为10。 我试着在带有 spring.datasource.hikari.maximum-池-大小=200 但是它不起作用,因为在日志中它仍然显示最大池大小为10。 我想改变的原因是,我不知怎么地达到了登台的极限,我不知道是什么原因造成的。

  • 问题内容: 我有一个表,我想定义和属性。请参见下面的示例。 我现在的问题是浏览器无法使用它。如果我在它上定义它,将被忽略,如果我在一个元素内的一个元素中定义它,则内容具有正确的最小和最大宽度,但表的大小仍然相同。(所以有很多可用空间:/) 我该如何解决? 编辑:我只是注意到问题似乎仅在表处于全屏模式时才会发生。但是,元素的最大宽度不应大于! 例: 问题答案: 对于表单元格,应使用’width’属性

  • 是否可以将最大池大小设置为软限制? 我的意思是,我希望HikariCP最多使用5个连接。但是,当需要第6个连接时,我希望HikariCP创建第6个连接,该连接在我将其返回池后将被销毁。此外,如果HikariCP通知我,由于池中的所有连接都已在使用中,因此创建了一个额外的连接,那就太好了。