最近,公司的网站因为一个接口关闭了,导致注册功能报错。但是老大请假了,接口所在的服务器无法重启,老大就叫我注释掉那个接口的入口,上一个临时的版本。 然后老大回来后重新启动服务器,我也把那个接口的入口放开。接下来就出现了神奇而让我头痛的问题:网站在一段时间内就会出现请求不到数据库的问题,就造成了网站无法打开。然后重启网站服务器就正常了! 最近一段时间一直出现这样的问题,一直找不到问题所在,只能笼统的觉得是网站代码是否出现了资源没释放、死锁、无限循环等。
因为老大是做JAVA的,而我们网站是用MVC 做的,代码方面只能我自己去解决。所以,在这方面老大不能帮到我!
我们现在所能确定的问题就是,前端所有的请求都没有到DB里面去。 但是找不到是什么地方导致所有请求不能到DB里面。 所有小弟在这里求助各位大神。帮忙分析分析,这样的问题该怎么解决? 有没有什么工具可以跟踪程序的代码!
我现在只有100多园豆了,我都 悬赏了。望各位大神帮帮我!
請求不到服務器..感覺跟改程式無關
各個server抓包看看吧
不是请求不到服务器, 是请求不到数据库
@留恋丶一刻:
一樣
DB沒有接到請求
代表請求死在半路上
手上沒有code最直接就是抓包
@RosonJ: 如何抓包? 这个是归于服务器一类还是归于程序一类!
@留恋丶一刻:
抓封包算是server除錯
工具推薦Wireshark
出錯的操作會經過的server都抓
看看斷在哪裡
再對該server上的程式或服務除錯
重點是先鎖定出問題的點
@RosonJ: 这个是要针对线上的版本进行抓包还是可以对本地程序进行抓包。?
@留恋丶一刻:
兩個都會出錯?
@RosonJ: 好吧 我大概明白了你这个抓包是什么了。 你这个应该是针对服务器-网络进行抓包分析,而不能针对本地程序进行分析。
针对网络方面的,老大会去找问题,我现在就是从程序代码上面看有没有什么地方会影响这个。
@留恋丶一刻:
沒錯
我想知道是否本地跟線上都有問題是因為
如果都有問題那基本可以排除環境因素,也就沒有抓封包的必要,鎖定程式除錯即可
@RosonJ: 线下的不知道有没有问题,因为本地不可能像线上那些。本地时时刻刻在重新生成。像线上那样过一段时间请求不到数据库的错误查看不出来,因为线上只要重新启动服务器,这个问题在短时间内不会发生,但是在一天内可能出现这样的问题。 届时,又必须重新启动服务器才会好。
我现在需要的就是你所说的“锁定程序出错”
豆好多哇~
重点看看你改的那些代码。。。
#region 加密字段 //电话 string timeStamp = Tools.GetTimeStamp(); string sign = Md5Helper.Md5Encode32(timeStamp + "dsfhsjhsjh67567fghk766y34yh5hsk"); //strresult = strservice.StrEncryptionJson(sign, timeStamp, tel);//接口调用 //strList = strresult != null ? strresult.data : strList; string Encryptiontel = "";//strList["text"].ToString();//加密后的联系方式 tel = Tools.RegRepTel(tel);//把联系方式中间的替换成* #endregion //以上是注释接口入口的代码 //下面是放开接口入口的代码 #region 加密字段 //电话 string timeStamp = Tools.GetTimeStamp(); string sign = Md5Helper.Md5Encode32(timeStamp + "dsfhsjhsjh67567fghk766y34yh5hsk"); strresult = strservice.StrEncryptionJson(sign, timeStamp, tel);//接口调用 strList = strresult != null ? strresult.data : strList; string Encryptiontel = strList["text"].ToString();//加密后的联系方式 tel = Tools.RegRepTel(tel);//把联系方式中间的替换成* #endregion
操作数据库用的EF还是ADO.NET?
用的是linq to sql 。 555
@留恋丶一刻:
linq to sql没有用过。不过还是说两个我所能想到的可能吧
1.是否操作数据库的连接没有被释放,然后不断的建立新的连接
2. 是否只有一个和数据库的连接在处理每次的数据库访问,而不是对于每个请求建立一个新的连接
@jackccc: 哦 好的, 我会参考你的建议去看看,但我觉得 linq to sql 应该不存在数据连接没有释放,linq to sql 是已经将数据库映射成模型了。
@留恋丶一刻:
ORM框架最終還是要跟DB溝通
只是一般不太需要考慮連線釋放問題
这个 可能是 数据库 连接池的问题 吧,连接池 在 web.config里面配置,网上搜索下 找解决的问题
应该有代码版本控制吧。找到两次变更的地方对比一下。另外把具体的错误信息贴出来下~
没有找到具体错误。 只是知道每次请求都不会到数据库!
@留恋丶一刻: 信息太少,实在是不好分析~
请求不到数据库?那是会报异常的吧,有没有记录异常日志,查看下
前端所有的请求没有保存到DB 数据库中,关于这个问题
首先确定 保存到数据库中的代码是java代码写的 还是C#
如果是java的话请你们老大帮忙看下 java程序是否有接收到你发过来的请求
如果是C# 自己单步调试 应该可以找到原因的 。
既然都是临时版本。服务器重启了, 他的使命也就完成了撒,废弃即可。
没有找打答案