zoukankan      html  css  js  c++  java
  • 记: 一次惊心动魄的解决 服务器 无解问题的心路历程

      2017年1月20日

      今天算是一个令人激动的日子了,为什么这么说呢?唉,一把鼻涕一把泪啊~总算把服务器的一个巨大Bug给解决了!

      事情的起源是这样的。由于我们公司里面是有两个服务器,一个是Web 服务器,一个是数据库服务器,由于之前的业务原因,需要将两个服务器合并到一起,所以就决定把数据库服务器关闭,将数据迁移到网站服务器,在一天晚上,一切都进行顺利。就这样过了差不多一周的时间后。我们系统的后台网站时不时会出现  如下问题:  

    无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,
    请检查 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesaspnet_stateParametersAllowRemoteConnection 的值,确保服务器接受远程请求。
    如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。

      我相信有很多人遇到过这样的问题,但是这样的问题对我来说很简单,只需要开启服务器的 ASP.NET 状态服务 就可以了,轻松解决。但是你知道有什么诡异的事情发生了吗,我检查服务器这一切都是正常的,但是还是有这样的问题出现,并且这个问题它不是一直出现,而是时不时的会出现这个问题,特别恼火,不管我怎么在网上查资料,怎么修改配置,一切都无济于事, why??? 以前这个问题都是很轻松解决的,为什么这次就不行了呢?这种问题也没有办法可以在本地调试的,所以问题肯定是处在服务器这边的,但是所有的配置都没有动过,为什么还是不行呢?我甚至想到了重启服务器,但是每次重启之后,过不了几个小时,又会出现这个问题,我就无语了,我不可能有问题就重启服务器啊,这肯定不行啊!我期间还怀疑是数据库迁移的问题,但是我想想这能有什么关系吗,也不可能啊,跟数据库肯定没关系的,还是另寻他路吧。

      我还想到过更新服务器的补丁,但是更新过还是不行!怎么办啊!我都开始怀疑人生了,这个问题一直困扰我差不多三天了,期间还出现过服务器CPU达到100%,我去,这怎么办啊!后来,我发现用我们系统去下订单,出现了一个以前没有遇到的新问题,

    1 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作......

      看到这个问题,我顿时兴奋了,我明白了,肯定是这个问题导致的,并不是上一个ASP.NET 状态服务 的问题导致的,我感觉终于有救了。我开始上网找这个问题的解决方案,但是找到的方案让我心灰意冷,什么虚拟内存不够,什么磁盘空间问题,什么修改注册表的值,什么访问量太大,端口不够的问题等等,经过分析,我都觉得不会是这些问题导致的,我们访问量一天也不多,几百个就不错了,怎么可能是这些问题呢...感觉心里又失落了,唉怎么办,但是我知道一定是这个问题导致的,必须从这个问题入手才行,

    所以我坚持继续根据这个问题查资料,根据我慢慢分析后,开始觉得应该是程序问题,有什么死循环,或者内存泄漏,连接没有释放的相关问题,我后来看到有一个资料说是,在任务管理器查看一下进程的句柄数,然后我去查看了一下,我发现出问题的那个网站的句柄数特别多,差不多和操作系统内核一样多了,接近2000个,然后内存暂用差不多高2个G,这十分的反常,我确定了就是这个系统的问题。

      然后我重启了这个进程之后,我去网站正常下单操作,这次没有问题出现了。但是我观察发现这个进程的内存和句柄数量增长特别快,我想我不可能随时重新进程吧,还是要找到根本问题!之后我去网上查找句柄一直增长的原因,推测出可能程序中有资源一直在占用,然后未释放,端口一直增加,导致服务器问题。 最后我恍然大悟,我想起我们系统中会使用到 websocket, 并且我们服务器的websocket 服务端并没有开启, 奥~我知道了,就是这个原因,因为程序中的 websocket 一直找不到服务器,所以会一直连接,不断重连,不断开启端口,所以出现了以前描述的问题。

      啊啊啊~终于明白了,然后我启动了服务器的websocket 服务端,问题就解决了!!!

      为什么没有开启websocket 服务端呢,是因为之前程序有过改动,并不会在此服务器上使用 websocket了,但是代码中并没有取消 websocket 的请求的功能,所以现在还不能关闭websocket 服务端,后续慢慢再去改吧!!!

     唉~心累啊!通过此次的经历,主要是记录下来,遇到这样无解问题的时候,需要怎样的思路去解决问题,以此为戒!

  • 相关阅读:
    React生命周期, 兄弟组件之间通信
    React组件式编程Demo-用户的增删改查
    React之this.refs, 实现数据双向绑定
    CCF CSP 201812-4 数据中心
    CCF CSP 201812-4 数据中心
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    PAT 顶级 1020 Delete At Most Two Characters (35 分)
    Codeforces 1245C Constanze's Machine
    Codeforces 1245C Constanze's Machine
    CCF CSP 201712-4 行车路线
  • 原文地址:https://www.cnblogs.com/yougmi/p/6322947.html
Copyright © 2011-2022 走看看