zoukankan      html  css  js  c++  java
  • 说一下我认识的*nix下的服务器热重启

    步骤:

    第一:

    收到SIGTERM以后现在的服务器监听socket停止accept

    但是并没有停止listen,这个很关键.(所以客户端发起的tcp连接的syn得不到synack,只是继续等待,而不会被拒绝)

     

    第二:

    收到sigterm的现有进程继续处理已经accept的socket.

    直到处理完毕结束退出.

    第三:

    在收到sigterm以后,接着发送sighup(要保证现有服务器进程已经停止accept).

    第四:

    收到sighup以后现有服务器进程serverId1,要fork一个新的进程,

    然后把listen的那个socket句柄传递给新exec创建的服务器进程serverId2(至于如何传递,自行百度)

    同时还要通过环境变量之类的机制告诉新创建的serverId2,你不用新创建socket listen了,直接用我传递给你的句柄就行了.

    serverId2直接用这个句柄愉快的accept就行了.

    这样新的服务器进程就完整运行起来了.

     

    这个玩意在win下面没有,我觉得可能是因为以下两个原因

    exe运行时不可覆盖,其实这个我觉得不打紧,用一个别的名字就可以了啊.

    句柄描述符不能跨进程传递?

     

    这个可以找时间研究一下.

  • 相关阅读:
    父亲对子女的话
    开通博客
    在linux下安装MySQLdb及基本操作
    java 词汇表速查手册
    java数据源的几种配置
    DBCP的参数配置
    Linux crontab定时执行任务
    很好看的Button CSS.
    C# 创建活动目录.txt
    解密存储过程
  • 原文地址:https://www.cnblogs.com/baizx/p/5058811.html
Copyright © 2011-2022 走看看