我有一个托管在 IIS 端口上的服务,用于提交一些信息,当成千上万的用户同时使用移动应用程序调用它时,服务器会卡住并且无法响应请求。此时我在任务管理器中观察到 SQL 占用了很高的利用率和内存。70-75% CPU 和内存。由于这个原因,我们需要每天早上和晚上重新启动 SQL 服务器。(我知道这对性能和统计数据来说是个坏主意,但服务器挂了)
我使用 .NET 框架和 SQL Server 2012 制作了 API。
知道我能做些什么来处理这个问题吗?
我有一个托管在 IIS 端口上的服务,用于提交一些信息,当成千上万的用户同时使用移动应用程序调用它时,服务器会卡住并且无法响应请求。此时我在任务管理器中观察到 SQL 占用了很高的利用率和内存。70-75% CPU 和内存。由于这个原因,我们需要每天早上和晚上重新启动 SQL 服务器。(我知道这对性能和统计数据来说是个坏主意,但服务器挂了)
我使用 .NET 框架和 SQL Server 2012 制作了 API。
知道我能做些什么来处理这个问题吗?
通常可以采取以下方法来解决这个问题。
优化你的应用程序的代码,尤其是频繁的连接和关闭数据库。每一个新的连接都会消耗cpu资源,所以如果有空闲的连接,最好主动关闭,而不是等待GC回收。对于数据查询,尽量使用索引查询,尤其是数据量很大的时候。我认为这适用于您,因为您将拥有大量的用户和用户数据。
由于 SQL Server 的特殊设计机制,默认会消耗服务器上 100% 的数字内存,这会导致性能下降。您可以设置最大服务器内存来限制 SQL Server 分配给缓冲池的数量,缓冲池通常是最大的内存消耗者。
正如 Lex li 所说,将数据库移动到单独的计算机是一个好方法。尤其是当有大量用户数据和数据处理时。IIS 和 SQL Server 在同一台机器上。服务器不仅要处理对应用程序的请求和响应,还要为 SQL Server 分配资源来处理查询。很容易遇到性能瓶颈。