服务器的性能监控

一:说明

模拟客户端发包,压测服务器性能

服务器:8核  +  4g

二:压测过程

1.玩家登陆、创建

2.玩家瞬时登陆上限(主要使用j.u.c信号量CountDownLatch)

3.战斗

4.移动

5.自动任务

6.场景无缝切换(暂未做验证)

三:技术过程

1.设置program argumetns,比如3000人战斗,参数:1,3000

2.加载配置文件,包括客户端需要的配置文件,主要目的是寻路、任务、采集、副本等

3.机器人的线程模型:

  机器人客户端只需要设置io worker线程数量,一般是:cpu*2

  netty inbound事件中接受服务器的返回消息,如果是机器人感兴趣的事件,抛到业务线程中处理,处理的业务线程数量:cpu

  移动任务、攻击任务等在机器人客户端都是统一的task,增加任务执行的schedule线程,线程数量:cpu

  机器人客户端模拟机器人的移动,类似定时移动任务帧,线程数量:1

  如果机器人有移动的队列信息,在上一步会轮训到,取出队列头信息,更改客户端机器人的位置

  所有机器人的状态变更,都是在业务线程中处理。

四:遇到的坑点

  消息的解码,由于是页游,之前用到了policy文件,定长为:162.具体的解码过程,后面文章中会详细说到。现在走843,已不用。

  消息的回调,新增了MessageCallBack,具体使用j.u.c的lock和condition

  机器人客户端的位置与服务器位置不统一,修正机器人的位置,并移动发送到服务器位置。

  读写操作导致机器人掉线,单独一个线程,每30S发送一次心跳包。

  服务器初始化脚本,导致somaxconn变大,临时更改:echo 32768 > /proc/sys/net/core/somaxconn

五:如何分析问题?

  使用Java命令:

    jps -l:查看Java的pid

    jstat -gc pid 1000:每1s查看一次垃圾回收情况

    jmap -dump:format=b,file=a.bin pid:dump出bin文件,可以结合MemoryAnalyzer.exe一起使用

    jmap -histo:live pid(根据情况看live是否使用),查看当前jvm占用的大对象

    cpu过高:

      top -Hp pid:查看当前占用最高的tid,线程ID

      printf "%x\n" tid:16进制转换

      jstack pid|grep tid -A 30:查看线程栈信息

  远程监控工具的使用:

    JAVA_OPTS="-Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=xxx"

    JMC="-XX:+UnlockcommercialFeatures -XX:+FlightRecorder"

  可视化工具的额使用:

    jconsole

    jvvm

    jmc飞行记录仪

    eclipse memory analyzer 分析bin文件

六:程序中集成SocketMBean接口,监控stat信息

程序的优化:

writeAndFlush还是write,单独线程flush?

是使用buffer还是directBuffer?

堆外内存大小的设置? -XX:MaxDirectMemorySize=256m

时间: 2024-10-11 07:30:49

服务器的性能监控的相关文章

Linux服务器常用性能监控命令汇总

1.ifconfig 网卡数目.ip地址.Mac地址.MTU大小 eth0 Link encap:Ethernet HWaddr 00:0d:3a:50:12:e9 inet addr:10.0.0.4 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::20d:3aff:fe50:12e9/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1

Citrix 服务器虚拟化之十三 Xenserver虚拟机内存优化与性能监控

XenServer的DMC通过自动调节运行的虚拟机的内存,每个VM分配给指定的最小和最大内存值之间,以保证性能并允许每台服务器的虚拟机密度更大.没有DMC,当一台负载较高的服务器创建虚拟机时将出现"内存不足"错误提示而失败:减少现有的虚拟机内存分配,使更多的虚拟机的空间,你必须编辑每个虚拟机的内存分配和然后重新启动虚拟机.启用DMC,即使服务器已满,XenServer将尝试回收内存通过自动降低其定义的内存范围内运行的虚拟机的当前内存分配.因此XenServer环境中,使用动态内存控制(

Apache服务器性能监控

Apache服务器性能监控 1.使用自带mod_status模块监控 1)加载mod_status.so 模块 在httpd.conf中打开LoadModule status_module modules/mod_status.so 2)修改httpd.conf配置文件增加(删注释#)如下内容: <Location /server-status>    SetHandler server-status    Order deny,allow    Deny from all    Allow

服务器性能监控tips

一.tops 第一行 当前时间/已运行时间/登录用户数/最近 5 10 15分钟平均负载(平均进程数 cat /proc/loadavg) 除了前3个数字表示平均进程数量外,后面的1个分数,分母表示系统进程总数,分子表示正在运行的进程数:最后一个数字表示最近运行的进程ID. 系统平均负载-进阶解释 只是上面那一句话的解释,基本等于没解释.写这篇文章的缘由就是因为看到了一篇老外写的关于Load Average的文章,觉得解释的很好,所以才打算摘取一部分用自己的话翻译一下. @scoutapp Th

SQL Server自动化运维系列——关于数据收集(多服务器数据收集和性能监控)

需求描述 在生产环境中,很多情况下需要采集数据,用以定位问题或者形成基线. 关于SQL Server中的数据采集有着很多种的解决思路,可以采用Trace.Profile.SQLdiag.扩展事件等诸多方案. 几种方案各有利弊,其中从SQL Server2012版本开始,微软的开始各种整合这些采集方案,力推扩展事件. 对于上述的数据采集只是一种实现手段,对于采集完数据的存储没有统一的规范,并且对于多服务器的数据采集及汇总没形成统一的规范. 本篇实现 1.通过SQL Server自带的数据采集器实现

MongoDB运行状态、性能监控,分析

转自http://tech.lezi.com/archives/290 MongoDB运行状态.性能监控,分析 Posted by neilxp on 十月 26, 2011Leave a comment (2)Go to comments 这篇文章的目的是让你知道怎么了解你正在运行的Mongdb是否健康. mongostat详解 mongostat是mongdb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态,并输出.如果你发现数据库突然变慢或者有其他问题的

Linux 性能监控 —— 磁盘 I/O

零. 前言 如果从磁盘(disk)中读取/写入数据, CPU 就会处于空闲状态, 大大浪费了这段等待时间 CPU 的计算能力. 所以SSD. 缓存. 内存. 寄存器之类的设计就是为了减少 CPU 的等待时间, 释放计算能力. 可以看出业界对磁盘 I/O 的重视, 以及磁盘 I/O 对系统的影响之大. 一.  如何查看磁盘 I/O 在 Linux 平台或者 BSD 平台下, 借助 top 命令可以清楚看到磁盘 I/O 情况. 二. 如何衡量磁盘 I/O 存在瓶颈 磁盘 I/O 是否存在瓶颈取决于当

[转载]前端数据之美 -- 七天打造前端性能监控系统

开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot improve it” ———— William Thomson 这是一个最基本的问题,为什么要关注和监控前端性能?对于公司来说,性能在一定程度上与利益直接相关.国外有很多这方面的调研数据: 性能 收益 Google 延迟 400ms 搜索量下降 0.59% Bin

关于 Java 性能监控您不知道的 5 件事,第 1 部分

责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java? 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 的内置分析器JConsole 收集和分析性能数据. 当应用程序性能受到损害时,大多数开发人员都惊慌失措,这在情理之中.跟踪 Java 应用程序瓶颈来源一直以来都是很麻烦的,因为 Java 虚拟机有黑盒效应,而且 Java 平台分析工具一贯就有缺陷. 然而,随着 Java 5 中 JConsole 的