我们的 MS SQL Server 使用了大约 95% 的 CPU 功率。
服务器(硬件)重启或 SQL-Service 重启后,使用率为 0%,并在 1-3 天的过程中缓慢增加。取决于它的使用量。
当它超过 80% 时,每个查询都非常慢。
我们的网站正在处理大量大型查询,因此其中一些需要 45-60 秒。重启后(CPU使用率低于80%),同一个Query需要11-20秒。
我怎样才能解决这个问题?我在网上读到亲和掩码可以调整 CPU 使用率,但亲和设置被禁用。我无法改变它们。这是因为我只有 1 个处理器吗?
查询本身有很多技巧,但我们的网站和服务相当大,要改变的地方太多了。
他们中的大多数已经得到了很好的优化。
我不能一直重新启动 SQL-Service,即使它只需要 2 秒钟,因为我们有一个警报服务,允许人们呼叫并录制消息,然后将呼叫选定的组并听到录制的消息。
这个系统被数百个搜救队使用,如果 SQL-Service 在警报期间重新启动,它将终止并且不会通知调用它的人。
我找遍了所有地方,除了关于“亲和面具”的东西之外什么也没找到,我无法改变。
必须有一种方法可以清除 CPU 缓存,而不终止当前查询......对吗?
SQL: Microsoft SQL Server 11.0.2100.60
OS: Windows Server 2012 x64
Processor: 2.30 GHz
RAM: 4.00 GB
Run Code Online (Sandbox Code Playgroud) 首先,如果这是重复的,我很抱歉。我找不到解决这个特定问题的人,或者我在阅读时可能没有意识到这一点。很可能我使用了错误的搜索短语,因为我对术语并不十分熟悉。
我们有3台服务器:
一个。SQL服务器
乙。警报系统
Ç。网站+API+其他
服务器B和C必须一直连接到服务器A,并且出现了几次宕机的情况,导致了很多客户的不满。
我们想要以下内容:(不同的字母使评论更容易,尽管可能不是 :p )
w ^。报警系统(带 SQL 服务器)
十。网站 + API(带 SQL 服务器)
是。网站+ API(带 SQL 服务器)
Z。其他(使用 SQL 服务器)
编辑: X和Y在技术上是相同的,但X通常会托管网站,而我们的应用程序和 3rd 方解决方案通常会连接到服务器Y上的 API ,以确保仅通过一个渠道感觉到故障。如果X崩溃,那么Y将同时为网站和 API 提供服务,直到X重新上线,反之亦然。
同步 SQL 服务器至关重要。如果客户端通过网站(服务器X)对数据库进行更改,然后激活警报系统W(更改很重要),那么它必须已经同步。
每个系统只使用部分数据库和表,为了节省资源,我们只能立即同步重要数据,每隔几个小时左右就可以同步其余数据。 编辑:不是一个选项
我们将在所有服务器上使用SQL Server 2014(除非有人说服我)