压力测试笔记 2
昨天发现登录时,任务初始化读取数据库操作频繁问题,今天为了找出其它数据库操作频繁问题,加入数据库操作计数变量,如果在登录或者运行某些计算时操作过于频繁,就再输出数据库操作日志,找出原因。
昨天发现登录时,任务初始化读取数据库操作频繁问题,今天为了找出其它数据库操作频繁问题,加入数据库操作计数变量,如果在登录或者运行某些计算时操作过于频繁,就再输出数据库操作日志,找出原因。
马上要封测了,现在开始压力测试.
1000个连接上,没有问题,但是登录后问题来了,处理一个登录要1秒钟时间,可想而知1000个需要多长时间.
这是肯定不行.
于是加入测试语句,查找是谁在拖时间.
最后找到是登录时初始化玩家的任务,才发现有900多个任务,每个任务又有小任务,而且小任务不管数据库有没有记录,都要去数据库中SELECT 一次.难怪,明天找人改过来,已经完成和还没有开始的任务就不需要读了.应该会快很多.
又发现写日志问题,在每次TICK调用的函数中,如果有CHECK之类的日志出错,会不停的写,导致服务器没有响应,除了关掉日志写硬盘外,几乎没有别的办法.在介面线程显示时,取日志消息时,每取一个,要加一个判断,看是否超出此次TICK可能使用的时间,如果超出,还未处理的TICK就下次再处理,这样介面就不会死掉了.
10055错误,压力测试客户端开了1000个连接,就报10055错误,查了发现是资源不足,后来想想,应该是连得太快了,服务器响应不过来,所以客户端的缓冲满了.调多点线程,或者发送每个连接的之间停一下.

当时看这部片子的时候,本人正在外地出长差,虽然不说事业正劲,但是至少也没想过要回武汉。
片子是在一个普通的工作日,下班之后,没地方去,一个人在办公室看完的,虽然只有不到两小时,但是我仿佛跟着主角杰克一起过了相当长的一段时间,在这段时间里,杰克经历了一个虚幻的过程,从一个什么都有,又什么都没有的钻石王老五,脱变成一个家庭至上的居家男人。
以前总是下载APE,自己克碟子,这次不同了,偶然的机会听到了一首"海上花",于是毫不犹豫的买了一张!
歌手玛丽亚,说实话,以前听都没听过这名字,将这首歌演艺得出神入话,个人觉得非常到位.那种低调的气氛,一点点忧郁,平淡中的激情,也许正是生活在一个平淡的世界中,一种自我陶醉的感觉,陶醉什么呢?听了歌就可以发现,其实任何点滴的事情,只要细细的品味,总可以找出一丝乐趣.
摘之:Advanced.Animation.with.DirectX
Here’s where using key frames comes in handy. Suppose you want to calculate the orientation of the bones at
a specific timesay, at 648 milliseconds. That time just so happens to fall between the second and third keys
(148 milliseconds past the second key). Now, assume that the two transformation matrices represent the
orientations of each bone in the animation.
D3DXMATRIX matKey1, matKey2;
By taking each key and interpolating the values between them, you can come up with a transformation to use
at any time between the keys. In this example, at 648 milliseconds in the animation, you can interpolate the
transformations as follows:
// Get the difference in the matrices
D3DXMATRIX matTransformation = matKey2 − MatKey1; // 请坐标位移
// Get keys’ times
float Key1Time = 500.0f;
float Key2Time = 1200.0f;
// Get the time difference of the keys
float TimeDiff = Key2Time − Key1Time; // 算出时间差
// Get the scalar from animation time and time difference
float Scalar = (648.0f − Key1Time) / TimeDiff; // 当前帧在两关键帧中间的比值
// Calculate the interpolated transformation matrix
matTransformation *= Scalar; // 算出当前帧的相对变换矩阵
matTransformation += matKey1; // 算出最终的当前帧的变换矩阵