随笔分类 - .Net
摘要:问题场景:非常重要带状态服务,经常出现机器硬件故障,需要运维手动切换备机,修改配置,反应速度慢。 想过解决方案:1. 一致性hash,目前使用zk临时节点方案有些问题。像如果机器因为网络不稳定掉线,Zookeeper Client在触发Session Expried 事件时,无法确定已经掉线多长时...
阅读全文
摘要:使用zookeeper 实现一致性hash。redis服务启动时,将自己的路由信息通过临时节点方式写入zk,客户端通过zk client读取可用的路由信息。服务端使用python 脚本写的守护进程:https://github.com/LittlePeng/redis-manager脚本部署在red...
阅读全文
摘要:曾经在负责Mysql时,那会觉得IO就应该是异步的,但是C# 版本Mysql Driver竟然只支持同步调用方式,简直不可接受哇。然后就研究Mysql Driver,并改了一版异步的实现,并且做了一次小组分享: PPT,抓包分析 (2011/11/3)。接下来为应对故障排查,也做了一版将Mysql ...
阅读全文
摘要:曾经写过一个远程网络抓包工具,为啥原远程抓了?在解决现网问题,或者统计数据,需要快速准确的抓取特点的网络吧。我们应用都是windows机器,经常需要抓XX服务某A机到XX服务B机的网络包,定位机器、查部署情况、IP地址、负载配置、同时操作多台设备等等都特别耗时,因为有了这个工具的设计初衷。于是开...
阅读全文
摘要:CLR会通过VirtualAlloc预先提交整个栈,提交之后就立即占用物理空间(物理内存或磁盘)。也许你会发现查看内存占用的时候看起来并没有占用那么多内存,那是因为线程栈一般很少用到1M内存的全部,提交内存在未被使用之前并不会真正分配。看看我的内存截图:提交数内和已用内存并不相等,因为很多...
阅读全文
摘要:为内存映射文件模块单独弄设计的,用于MMF上实现多进程见消息传输;测试中发现命名管道的效率很差,性能还不如用Socket Loopback,决定试试MMF。测试了下性能还不错,在我机器上:测试每个包4K 每秒可以执行近100w写入+读取操作,也就是每秒8G的数据操作,可以满足觉大多数业务需求。唯一不...
阅读全文
摘要:.Net4 增加的System.Collection.Concurrent线程安全的集合实现,这儿有MS的性能测试报告:Thread-safe Collections in .NET Framework 4 and Their Performance Characteristics。总的来说效率还是...
阅读全文
摘要:查了下MSDN的解释: MemoryBarrier is required only on multiprocessor systems with weak memory ordering (for example, a system employing multiple Intel Itanium...
阅读全文
摘要:多线程环境下使用那种锁往往凭个人感觉,缺乏测试数据的支持很容易走入误区,就像我知道的很多人就觉得Lock好慢好慢,Lock-Free 就能飞起来一样。下面对Lock、Level-Lock、Lock-Free、ReaderWriterLock、ReaderWriterLockSlim 这几种锁分别做下...
阅读全文
摘要:闲着没事试着写写,本来想应该挺简单的,但一写就折腾大半天。Http要实现多线程现在需要WebHost对HttpHeader中Range支持,有些资源不支持Range头就必须顺序下载。协议参考 rfc2616:http://www.ietf.org/rfc/rfc2616.txt大概步骤:1.检测Ra...
阅读全文
摘要:这个前段时间无聊写的,还有不基于IIS的实现,HttpListener和Socket(Socket暂时没写)请移步到这儿下载源代码。 所谓的长连接就是服务端长时间挂起请求, 不立即返回,等必要时在返回。至于客户端通常有Iframe的Chunked方式和普通的XMLHTTPRequest。Iframe
阅读全文
摘要:CLR Profiler 有两个版本,分别用于CLR1.1 和 CLR2.0,至于CLR4试了一些也可以,但不知道是否完全兼容不,分别2003,和2005 由微软CLR性能组发布的。几百k很小巧的工具,有给出源代码,核心部分用C++写的,UI使用C#编写。CLR Profiler使用注入式测试,他会
阅读全文

浙公网安备 33010602011771号