问题:
尝试使用单独的SQL Server 2017和IIS 7.5服务器获得相同(或更好)的性能,而不是将它们放在同一台计算机上。
努力实现未来增长的可扩展性。
在运行IIS和SQL Server 2017 Developer的同一个盒子上使用WebSurge,在6个内核和12个逻辑处理器上运行32gb ram,机器没有重大的性能问题。我们可以以极快的速度以每秒4000个请求的速度在WebSurge上运行以下代码。
问题:
一旦我们在本地LAN上的同一千兆位连接上的单独IIS盒和单独的SQL Server上运行相同的代码,我们在自己的盒子上运行的IIS上每秒只能获得大约350个请求。注意:SQL Server在运行它的盒子上使用< 1%CPU来处理这350个请求,因此它不是查询或SQL Server性能的问题,因为相同的代码在同一台机器上运行超过4000的IIS
LAN电缆插入同一个交换机,从IIS到SQL Server,PING始终<1ms。
在完成的请求如此大幅减慢的情况下,我们做错了什么,但是当在同一个IIS / SQL Server框上再次运行时...它每秒超过4000个。
我们计划很快创建大型服务,网络流量将超过每秒4000个请求,因此我们需要额外的服务器,负载平衡器等。我们目前正在努力了解为什么我们每秒只能处理350个请求一个IIS框,与服务器不在同一台机器上。
我还要指出在任何一种情况下CPU都无法运行超过50%。
运行此代码时,SQL Server仅消耗大约10%。
<%
rangedb="Provider=SQLOLEDB;" & _
"Data Source=10.10.1.220,1433;" & _
"Initial Catalog=xxxxxxx;" & _
"Network=DBMSSOCN;" & _
"User Id=xxxxxx;" & _
"Password=xxxxxx"
set cnn = Server.CreateObject("ADODB.Connection")
set rst = Server.CreateObject("ADODB.RecordSet")
cnn.open rangedb
sqltext = "SELECT page_content,template_id FROM master_templates_data where (template_id='165' or template_id='166' or template_id='167' or template_id='168' or template_id='169' or template_id='170' or template_id='171' or template_id='172' or template_id='173' or template_id='182' or template_id='183' or template_id='184' or template_id='185' or template_id='186' or template_id='187' or template_id='188' or template_id='189')"
rst.CursorLocation=2
rst.CursorType=0
rst.LockType=1
rst.Open sqltext,cnn
dataArray = rst.GetRows()
rst.close
cnn.close
%>
我们已经浏览了整个互联网,无法找到原因。
任何帮助将不胜感激!
(是的,我们知道经典的ASP不是这样的项目的方式,但我们想为我们目前的情况解决这个问题)
如果有更好的替代方案,例如MySQL和PHP / Linux,我们会对性能如何更好的方式持开放态度。
这是我们第一次在这里发帖,所以请善待:)