zoukankan      html  css  js  c++  java
  • 理解NetworkSock之FastTcpSreverEx

    理解NetworkSock之FastTcpSreverEx

    前言

    本小节是NetworkSocket系列的第10小节,在阅读本小节之前,您可能需要先阅读前面的使用FastTcpServerEx构建服务器,否则觉得本文内容跳转比较大。

    描述

    FastTcpServerEx是从TcpServerEx派生,使用的协议和TcpServerEx完成相同,FastTcpServerEx充分结合C#强大的反射功能,大大地简化了服务器编程难度,从使用FastTcpServerEx构建服务器看出中,只要定义服务接口,实现接口,就完成了服务器,这是因为利用了反射。下面是使用FastTcpServerEx构建服务器小节中中的DemoServer类图,IDemoServer里的所有方法,是需要反射动态调用的方法,因为这些方法会被频繁地调用,所以我们需要把它们缓存到列表中,用到的时候取出就可以,在缓存到列表之前,我们把方法转换为MethodinfoEx对象,因为MethodinfoEx的Invoke方法是优化过的,后面我们需要调用它的Invoke方法。

    运行原理

    当前上面的第1、3、4、5步,都是由FastTcpServerEx内部来完成,DemoServer需要做的,仅仅是把Login方法给实现了,就也是业务部分的内容。客户端请求Login之后,DemoServer会收到DataEventExArg参数,我们把DataEventExArg的Action属性与缓存的方法关联起来,就可以从缓存中方便找出对应Login对应的MethodinfoEx对象,在调用MethodinfoEx对象,Invoke的数据参数是从DataEventExArg的Binary中转换而得。

     
     
    分类: NetworkSocket

    优化杭州某著名电子商务网站高并发千万级大型数据库经验之- 磁盘I/O性能

    好久没写博客了,一方面是懒得写博客,另外一方面是想更多的时间陪陪家里人,享受春天的美好时光,同时还在写一本《程序员,你伤不起》的一本书要由人民邮电出版社出版;公司有2台超级强大的服务器,其中1台服务器是用来备份容灾用的,防止老的服务器发生硬件故障时整个网站系统崩溃,若那样会给公司带来惨重的经济损失;而且这样超级强大的服务器不是今天订货明天就能送货上门的。

          大学刚毕业那会喜欢研究数据库技术,那时候觉得数据处理很重要,而且数据库优化更重要,看了很多数据库性能优化方面的资料,平时设计软件系统时也会多关心一下数据库的性能问题。但是一直没遇到专门做数据库优化的DBA工作,就渐渐的放弃了数据库专业发展道理。

          不是每个公司都能有专业的数据库DBA工作岗位,也未必请得起专业的高手DBA,就是请了人家也未必来对吧。因为没那样的好环境人的技能是容易走下坡路的当然也就更容易贬值而不是升值。

          其实让别人放心来弄公司的核心数据库,放心让你操作公司的核心主机,都需要有一个信任的过程;一方面是需要信任你的为人,另外一方面也能信任你的技能高超;因为有任何错误的操作可能会导致天大的错误,服务器停止运转1个小时的直接经济损失就是1-2万元。而且还要在那么多客户面前丢人现眼。间接的损失更是不可估量的会影响到网站的形象。

         判断数据库的瓶颈需要一个过程,需要知道数据库的瓶颈是出在哪里? CPU? 内存? 网络? 磁盘? 索引?sql语句? 经过1周的分析优化(3个通宵),得出的结论是最核心的数据库瓶颈问题出在磁盘的读写速度已经跟不上网站的数据大并发。

        大学刚毕业那会儿也喜欢研究数据库技术,但是当时迷茫,不知道数据库技术能否派上用处,学了是否能找到个好职位、将来能重视到什么程度,其实多年在这方面的关注积累也奠定了1周时间能把服务器的性能提升4-5倍的可能。没有积累是短时间内难突破的。当然也建议平时多看看这方面的书籍、网上的资料。

         1:需要用性能监视器,来看看磁盘的性能,这个参数是建议小于2,在实际服务器上这个参数经常会跳到接近100,几乎没低于2个时候,而且是1天24小时都很大,这表明服务器的磁盘I/O已经遇到了瓶颈了。

     2:磁盘队列的长度经常是10-100,也比较大,感觉是有性能问题,而且服务器行的E,F盘只当备份用;24小时里,只有半个小时在发挥价值,C,D盘在疯狂的大量数据读写,对磁盘的稳定性寿命都是一个极大的挑战,好再服务器硬盘的质量好否则早就死翘翘了;由于主数据不能有任何闪失,也不能随便转移到其他硬盘上,主数据是做了RIAD5,所以把一些索引文件、临时数据库、日志文件都搬移到了E,F盘上,因为这些数据就是丢失了问题也不大,也没必要恢复,这么修改了一下后,E,F盘也24小时不断的利用上了,而且还减少了主盘的读写压力。

     

    下面的一张图就是我们平时的台式机、这性能配置差距可不是一般的小,看看CPU数、内存数,就知道有多大差距了。这也是我目前以来亲眼见过得最好的3个服务器之一,亲自能管控的最好的2个服务器之一难得能感受驾驭这么强大的服务器快感。

          3:把核心数据库又分了几个文件组、每个文件组又加了一些文件;把一些数据库量超过百万级别的表按业务逻辑进行了分区,同时做了一些索引优化等等工作。

          4:把多个硬盘都合理利用,每个硬盘都按配置干不同的工作,经过进一步的优化,磁盘的队列下降到10以内,偶尔高峰期会超过这个值,平时访问量压力不大时,磁盘队列降低到了1以内,对主数据库的磁盘寿命、磁盘的压力都有了很大的改善。

          经过这次的连续奋战1周多,感觉自己在职业道路上又升华了一次,亲自操刀优化了全球1000强的电子商务网站的核心数据库,感觉到有些小骄傲。下次有机会再参加专业的数据库优化的课程,再深入学习提高一下,也欢迎在杭州的数据库维护管理人员朋友周末、晚上什么的一起喝茶聊天。

         我的QQ:252056973

         下次有空时,继续把这次优化的经验分享给大家。

     

    将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。
  • 相关阅读:
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序 解决方法
    未能从程序集“System.ServiceModel, Version=3.0.0.0问题解决
    HTML5斯诺克桌球俱乐部【译】
    MVC调试时查看生成的sql语句
    小问题 小技巧 :创建虚拟目录并将IIS里面.net配置版本设为2.0
    网页调用服务程序
    WatiN——Web自动化测试(三)【弹出窗口处理】
    WatiN——Web自动化测试(二)
    小问题 小技巧 :网站路径问题
    小问题 小技巧:敲回车默认提交
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3024030.html
Copyright © 2011-2022 走看看