高分求大神解决网站速度慢问题

zoulei2546 2013-06-21 09:58:22
公司网站进行改版,所有页面都完成好,本地测试完成,架设到一台空服务器上测试也是正常,但是这台空服务器是作为数据库服务器,所以将网站转移到代码服务器,由于代码服务器上运行着老版网站,数据库和代码共存于一台服务器,使用的是2.0框架,数据库设置最大内存占用18G,将代码转移过来以后进行测试,结果发现网站速度慢,将数据库内存降低到12G,依旧慢,打开静态页,去掉js,速度上来,但是其他页面依旧慢,特别有几个页面是通过lucene.net查询的,速度更加慢,但是很奇怪的是,lucene.net查询,有些关键词只需要0.4-0.6秒,但是有些关键词却要40秒,甚至更长时间,通过数据库服务器的数据库中的活动监视器查看sql语句,发现都在400毫秒以内,通过代码服务器的性能查看IO的响应时间为0.03-0.19之间,IO的吞吐率很大,硬盘转速是15000转的,在此求各位大神能够帮帮小弟,小弟不胜感激!多给点意见!最后说明一下,老网站速度是不慢的!
...全文
1106 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
喂大的程序员 2013-06-22
  • 打赏
  • 举报
回复
愿楼主早点解决,学习经验
  • 打赏
  • 举报
回复
引用 12 楼 zoulei2546 的回复:
主要是我们新版要换老版的,还有一些要挂在老版上,而老版都在代码服务器,域名解析也是到代码服务器的,如果这么换,老板联系服务器托管商,那边说麻烦,所以得必须把所有都确定了,才能换,不然换过去,高流量一来,网站慢了,又得马上回到代码服务器的,域名解析时间不好控制,会使老网站一直打不开,又不敢试,就纠结在这里啊!
什么服务器商?改变域名解释不是购买域名的人自己去设置吗?你们是不是公司没有肯动手的人、全都是指挥的人啊?如果自己动手,这个地方就不会因为别人一个随口“减少责任”的话而忧心忡忡,你们自己应该知道这是是怎么回事。凡是在小事上“一直不敢试”的,往往说明:公司的技术管理上出现了一些状况,可能有研发技术的人都走了,剩下的人主要是服务人员充当技术人员。 暂时从老版移到新版,也不需要去改变什么域名解析,在IIS(或者其它web服务器)上配置一下相应网站或虚拟目录的重定向地址就行了。
  • 打赏
  • 举报
回复
引用 7 楼 zoulei2546 的回复:
引用 6 楼 sp1234 的回复:
这就好比如你说“我没钱了”,我希望你要知道你买哪一样东西花了钱。
请问下,如何查看每个程序占用的带宽呢?
查看程序占用带宽?我是说“重要的几个操作”,不是指什么整个程序平均,也不是指什么数据库平均,之类的。 你需要在程序中写日志,然后比如说打开日志文件看到:
19.21.23.345秒  发送消息abcd,共23458字节
19.21.23.359秒  发送消息efgh,共982字节
19.21.23.375秒  接收消息abcd,共8373字节
19.21.23.912秒  接收消息mmmm,共60字节
19.21.24.300秒  发送消息kkkk,共1482374234字节
19.21.24.311秒  发送消息kkkk,共1482374234字节
如果你能进行的分析只是“平均xxxx”,你无法进入细节,那么这种分析测试就没有意义了。你只能处理平均值问题,而不能处理“个别时间要消耗40秒”这类技术问题。
showjim 2013-06-22
  • 打赏
  • 举报
回复
一般的web应用,400ms的单次SQL查询本就很夸张了。如果查询组合很多而且没有专用缓存系统的话慢就是正常事了。有专用缓存系统的话,SQLServer尽量少给内存,否则就是浪费内存。另外看看索引是否可用,或者考虑一下固态硬盘。 记得lucene有种支持缓存的模式,单关键字查询应该直接与结果数据量相关,0.4s结果应该在1000w级别以上了。 个人感觉,硬盘写操作可能有很大的问题。服务器上是否装有类似于360之类的流氓软件?此类流氓软件将可能造成硬盘写操作10倍速的降低。
zoulei2546 2013-06-22
  • 打赏
  • 举报
回复
引用 14 楼 sbwwkmyd 的回复:
一般的web应用,400ms的单次SQL查询本就很夸张了。如果查询组合很多而且没有专用缓存系统的话慢就是正常事了。有专用缓存系统的话,SQLServer尽量少给内存,否则就是浪费内存。另外看看索引是否可用,或者考虑一下固态硬盘。 记得lucene有种支持缓存的模式,单关键字查询应该直接与结果数据量相关,0.4s结果应该在1000w级别以上了。 个人感觉,硬盘写操作可能有很大的问题。服务器上是否装有类似于360之类的流氓软件?此类流氓软件将可能造成硬盘写操作10倍速的降低。
我是读的操作,从系统自带的性能检测那边查看硬盘的响应时间都是0.019到0.2左右,我用的是盘古分词后去查询,40秒或者0.4秒都是从进Lucene查询2000条数据然后遍历返回一个数组,这个时间段的时间,索引文件记录的是600w+的数据,使用的是磁盘索引,数据库400MS的查询,主要是根据id列,20个id去一张600w数据的数据表里查询,速度400ms,如果慢该如何解决呢,也就操作这张表的时间久,其他的一般在50ms以下,一部分在50-100ms,很少有上100Ms的,我的查询语句是select id,title,content,price,city...(10几个字段) from table where id in(20个id的id列),能有什么能够改进的吗?希望您能够给我提供帮助!
zoulei2546 2013-06-22
  • 打赏
  • 举报
回复
引用 16 楼 sp1234 的回复:
[quote=引用 12 楼 zoulei2546 的回复:] 主要是我们新版要换老版的,还有一些要挂在老版上,而老版都在代码服务器,域名解析也是到代码服务器的,如果这么换,老板联系服务器托管商,那边说麻烦,所以得必须把所有都确定了,才能换,不然换过去,高流量一来,网站慢了,又得马上回到代码服务器的,域名解析时间不好控制,会使老网站一直打不开,又不敢试,就纠结在这里啊!
什么服务器商?改变域名解释不是购买域名的人自己去设置吗?你们是不是公司没有肯动手的人、全都是指挥的人啊?如果自己动手,这个地方就不会因为别人一个随口“减少责任”的话而忧心忡忡,你们自己应该知道这是是怎么回事。凡是在小事上“一直不敢试”的,往往说明:公司的技术管理上出现了一些状况,可能有研发技术的人都走了,剩下的人主要是服务人员充当技术人员。 暂时从老版移到新版,也不需要去改变什么域名解析,在IIS(或者其它web服务器)上配置一下相应网站或虚拟目录的重定向地址就行了。[/quote]谢谢你的提示,我周一上班的时候按照您的想法去试试,可能我想的太复杂了,也希望您还能有好的建议
zoulei2546 2013-06-21
  • 打赏
  • 举报
回复
引用 9 楼 hiv002 的回复:
实在不行的话可以考虑换数据库。我看你的情况,好像公司用的是sql,试试mysql或者Oracle。我们公司用的Oracle。
应该不是数据库的原因,从任务管理器里查看,发现带宽和cpu都不高,只是内存我们设置了数据库最大18G,一般内存都是达到20个G,总内存是24个G
zoulei2546 2013-06-21
  • 打赏
  • 举报
回复
引用 11 楼 qingfeng_wu 的回复:
还有,你换下其他服务器试试,如果没有出现你这种情况,那就说明是服务器的原因了。看你说的,我也觉得不是代码的原因。
主要是我们新版要换老版的,还有一些要挂在老版上,而老版都在代码服务器,域名解析也是到代码服务器的,如果这么换,老板联系服务器托管商,那边说麻烦,所以得必须把所有都确定了,才能换,不然换过去,高流量一来,网站慢了,又得马上回到代码服务器的,域名解析时间不好控制,会使老网站一直打不开,又不敢试,就纠结在这里啊!
吴青峰 2013-06-21
  • 打赏
  • 举报
回复
还有,你换下其他服务器试试,如果没有出现你这种情况,那就说明是服务器的原因了。看你说的,我也觉得不是代码的原因。
吴青峰 2013-06-21
  • 打赏
  • 举报
回复
引用 2 楼 zoulei2546 的回复:
[quote=引用 1 楼 qingfeng_wu 的回复:] 第一,可能是你写代码的原因,对sql 的优化不够。 第二,你试着加索引看看,对于一些复杂查询,而且又经常用到的字段条件,加上组合索引看看。 我觉得最主要的还是这两个原因,服务器这样的配置一般都是符合要求的,所以可能性很小。
数据库我检查过了,而且sql2008不是有一个活动监视器可以查看最近最耗资源的查询吗?我看到毫秒数都是在400毫秒以内的,还有我原先是将项目架设到跟数据库同一台服务器上,网站打开速度正常!架设到代码服务器上,一些js或者图片通过谷歌浏览器的F12查看到需要4秒左右的下载,通过lucene.net索引查询数据,所需时间是将项目架设数据库的几十倍,不过在代码服务器上,lucene.net搜索时间有时又是正常的,0.4秒左右,有时却是30-50秒,代码服务器的配置比数据库服务器好![/quote] 如果你确定你写的代码没有问题,而且加了索引。那你不妨可以联系下服务器的商家,如果是自己的服务器,那也要找网管看下具体原因。
哈特比尔波 2013-06-21
  • 打赏
  • 举报
回复
实在不行的话可以考虑换数据库。我看你的情况,好像公司用的是sql,试试mysql或者Oracle。我们公司用的Oracle。
哈特比尔波 2013-06-21
  • 打赏
  • 举报
回复
my god看cpu输出
zoulei2546 2013-06-21
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
这就好比如你说“我没钱了”,我希望你要知道你买哪一样东西花了钱。
请问下,如何查看每个程序占用的带宽呢?
  • 打赏
  • 举报
回复
这就好比如你说“我没钱了”,我希望你要知道你买哪一样东西花了钱。
  • 打赏
  • 举报
回复
外网ip并没有什么值得担心的。 我不是说你要得出“时间”,我是说你要得出“带宽占用”。而且你不是基于某个服务,而是要知道具体是哪一个程序方法最消耗带宽。
zoulei2546 2013-06-21
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
很难说。 你可以跟踪一下某些关键操作下,此时通过网卡传输的业务信息用了多少带宽。
因为服务器上是没有装VS2010的,我就对执行lucene.net的这个方法进行时间计算,得出的时间有些要30-50秒,有些却只要0.5秒,还有数据库远程连接,我是用外网ip来访问的,不知道这是否会影响整个网站的性能!
  • 打赏
  • 举报
回复
很难说。 你可以跟踪一下某些关键操作下,此时通过网卡传输的业务信息用了多少带宽。
zoulei2546 2013-06-21
  • 打赏
  • 举报
回复
引用 1 楼 qingfeng_wu 的回复:
第一,可能是你写代码的原因,对sql 的优化不够。 第二,你试着加索引看看,对于一些复杂查询,而且又经常用到的字段条件,加上组合索引看看。 我觉得最主要的还是这两个原因,服务器这样的配置一般都是符合要求的,所以可能性很小。
数据库我检查过了,而且sql2008不是有一个活动监视器可以查看最近最耗资源的查询吗?我看到毫秒数都是在400毫秒以内的,还有我原先是将项目架设到跟数据库同一台服务器上,网站打开速度正常!架设到代码服务器上,一些js或者图片通过谷歌浏览器的F12查看到需要4秒左右的下载,通过lucene.net索引查询数据,所需时间是将项目架设数据库的几十倍,不过在代码服务器上,lucene.net搜索时间有时又是正常的,0.4秒左右,有时却是30-50秒,代码服务器的配置比数据库服务器好!
吴青峰 2013-06-21
  • 打赏
  • 举报
回复
第一,可能是你写代码的原因,对sql 的优化不够。 第二,你试着加索引看看,对于一些复杂查询,而且又经常用到的字段条件,加上组合索引看看。 我觉得最主要的还是这两个原因,服务器这样的配置一般都是符合要求的,所以可能性很小。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧