• 压服务器性能


    今天,对服务器简单做了压力反馈给老大

    总共有5台机器可用。分别在4台机器上各开了一个client进程,在1台机器上开了一个server进程。

    在当前项目框架的基础上,用了一点技巧,可以使每一个client都支持开N个socket连接到server上。这样可以模拟出大量个客户端跟server通信。

    每个socket连接,平均每秒发送一条协议给server。200, 400, 600个socket连接不断加上去,通过top观察,CPU占用率就不断上去了

    当总数为800个socket连接时,server所在的机器,CPU达到了80%~90%,平均每秒发送一条协议,10秒就8000条了。那么一秒内,理想情况下,server要1秒内把800个事件处理完,并且最好1毫秒要处理一个。但目前的情况,是不可能。一般处理一条协议,需要1至2毫秒,甚至有部分10毫秒级别的。处理不及时产生的后果是延时,并且随着client不断发协议,后面延时越严重。

    不过还好,现实中,并不是每个socket连接会平均一秒发一条协议给server处理这么频繁。我想这游戏服应该能支持1000人同时在线。再多就不好说了

    oh, my god

    ----更新--20130803-------

    在微博上看到这个例子,YouPorn网,每秒处理30万个页面请求。

    http://weibo.com/p/1005051355610915/weibo?from=page_100505&wvr=5&mod=headweibo

    要做出高性能的服务器,功力得要很深厚

    -------------------2013-09-04-----------------------

    当对MySQL异步更新后,性能好很多

    世界频道的聊天也是占性能的大块。平时看到文章也有说,像聊天这种与游戏逻辑无关的,另开一个进程作为聊天服务器,专门处理聊天

    经测试,print这个打印函数,需要消耗15至20微秒。日志打得多,会影响性能。可以规划好,封装出调试、警告、错误的print。或者使用开源的日志库,比如google的Glog

  • 相关阅读:
    JDBC的PreparedStatement是什么?
    Jquery的基本使用方式
    ArrayList,LinkedList,Vector的区别
    数据库连接池的原理。为什么要使用连接池
    .java.util.Date和java.sql.Date有什么区别?
    JDBC的PreparedStatement是什么?
    .Spring Boot 有哪些优点?
    Redis中的常用命令哪些?
    【mybatis-plus】分页、逻辑删除
    MySQL全面瓦解15:视图
  • 原文地址:https://www.cnblogs.com/yemsheng/p/3229127.html
Copyright © 2020-2023  润新知