SQLSERVER复制优化之一《改变包大小》

自从搭了复制之后以为可以安枕无忧了,谁不知问题接踵而来

这次遇到的问题是丢包,不知道情况的读者可以先看一下我之前写的一篇《SQLSERVER监控复制并使用数据库邮件功能发告警邮件

因为机房C和机房A不在一个局域网,网络状况不是太好

分发积压的命令经常处于20W+条,复制并没有报错,每次传递的事务都是少于30个,正常来讲SQLSERVER默认每次会传输100个事务

后来测试了一下网络情况

从分发服务器ping一下订阅服务器,ping  4096Byte大小的包,ping100次,因为分发默认传输的包大小是4096Byte,中间偶尔会超时

ping  订阅服务器ip  -l 4096 -n 100

参数l是指包的大小, 参数n是指ping的次数,不加 -l 参数的话默认ping的包大小为32Byte

100个包有21个丢包

ping  订阅服务器ip  -l 1024 -n 100

100个包有5个丢包

后来又继续ping  512Byte 、256Byte、128Byte大小的包,发现越小的包,丢包率就越低

从当前的网络测试情况来看,需要调整一下分发代理的包大小,在分发代理配置文件里有一个参数  -PacketSize packet_size

这个参数是设置分发代理发送到订阅服务器的包大小的。

环境:发布和分发都在同一台机器


设置

我们将分发代理的包大小设置1024Byte,那么怎么设置呢?

有两种方法:

方法一:修改分发agent 的作业

(1)打开分发代理作业

(2)转到步骤

(3)双击“运行代理”,然后添加参数  -PacketSize 1024 ,点击确定,退出作业属性

(4)停止分发代理作业

(5)开始分发代理作业

这样设置过后,分发代理就会以新的参数运行

但是代理配置文件是看不出来当前分发代理的运行参数的,还是显示4096Byte

方法二:新建一个代理配置文件,然后直接修改参数

(1)默认的代理配置文件是修改不了的

(2)新建一个代理配置文件

(3)选择默认代理配置文件(新代理的默认值)

(4)输入配置文件名:testprofile,把“仅显示此配置文件的参数”的勾去掉,修改-PacketSize参数为1024,然后点击确定

(5)勾选testprofile,然后点击确定

(6)跟分发作业一样,点击“停止分发代理”,然后点击“启动分发代理”,使设置生效
 

验证
那么我怎么知道究竟当前分发代理是否使用1024Byte大小的包来传送呢?
这时候可以借助Microsoft Process Monitor 3.10这个工具
 
在发布端使用这个工具来监测一下

复制分发代理
复制分发代理是一个可执行文件,它能将快照(对于快照复制和事务复制)和保存在分发数据库表中的事务(对于事务复制)移动到订阅服务器上的目标表中。

若要启动分发代理,请从命令提示符下执行 distrib.exe

 
打开任务管理器,查看分发代理进程的进程ID(PID),然后打开Microsoft Process Monitor 3.10,设置筛选条件
使用process monitor来监控分发代理传输的包大小
 
看一下length,最大的包也不会超过1024,说明设置生效了
 
 未分发命令降下来了
 

注意:
当你的服务器中当前多个数据库是做了复制的,一个数据库只有一个logread进程,多个数据库就对应多个logread进程
分发代理也是,一个数据库可以有多个分发代理,每个分发代理对应他们各自的进程(distrib进程)
所以一定要看清楚,你当前查看的distrib进程是不是你刚才设置的那个分发代理
 

总结
 
这篇文章只是阐述了复制的过程当中出现问题的其中一个原因,当然还有很多原因,例如 发布库的日志文件VLF太多等等。。。
 
在分析的时候一定要多个角度分析,不能死磕一个方面,因为复制涉及到的方面比较多
 
有可能是发布端的问题,有可能是分发端的问题,也有可能是订阅端的问题
 
 
感谢菠萝兄的热心帮助o(∩_∩)o 
 
如有不对的地方,欢迎大家拍砖o(∩_∩)o 

SQLSERVER复制优化之一《改变包大小》的更多相关文章

  1. SQLSERVER复制优化之一《减少包大小》

    原文:SQLSERVER复制优化之一<减少包大小> SQLSERVER复制优化之一<减少包大小> 自从搭了复制之后以为可以安枕无忧了,谁不知问题接踵而来 这次遇到的问题是丢包, ...

  2. apk瘦身(包大小优化)

    最近太忙好久没有写随笔,放假才有空写写随笔. 最近在项目中一直在做包大小优化 随着业务需求的增加,包大小是忍不住的往上涨 为了提高应用市场下载转化率,一直在优化包大小 首先 分析你的apk中占比的主要 ...

  3. SQLServer复制(二)--事务代理作业

    之前的一篇已经介绍了如何配置复制,介绍了发布者.分发者和订阅者以及事务日志运行的简单关系.其中提到了复制代理,我们这篇将详细介绍复制代理,它是什么?在事务复制的步骤中起到了什么作用? 代理和工作 首先 ...

  4. 6.关于Xamarin Android对APK包大小的处理

    降低学习成本是每个.NET传教士义务与责任. 建立生态,保护生态,见者有份. 对于apk 包的大小大家都是很敏感的,虽然现在安卓手机的性能和存储越来越厉害了.本着能少一点是一点的态度,我们还是要深入理 ...

  5. 个人永久性免费-Excel催化剂功能第82波-复制粘贴按源区域大小自动扩展收缩目标区域

    日常工作中,复制粘贴的操作,永远是最高频的操作,没有之一,在最高频的操作上,进行优化,让过程更智能,比一天到晚鼓吹人工智能替换人的骇人听闻的新闻来得更实际.此篇带来一点点的小小的改进,让日后无数的复制 ...

  6. 01.SQLServer性能优化之----强大的文件组----分盘存储

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...

  7. JavaScript动画-拖拽改变元素大小

    ▓▓▓▓▓▓ 大致介绍 拖拽改变元素大小是在模拟拖拽上增加了一些功能 效果:拖拽改变元素大小 ▓▓▓▓▓▓ 拖拽改变元素大小原理 首先这个方块得知道我们想要改变这个它的大小,所以我给它设定一个范围,当 ...

  8. 带你实现开发者头条APP(四)---首页优化(加入design包)

    title: 带你实现开发者头条APP(四)---首页优化(加入design包) tags: design,Toolbar,TabLayout,RecyclerView grammar_cjkRuby ...

  9. Unity3D之如何将包大小减少到极致

    http://www.luzexi.com Unity3D之如何将包大小减少到极致,图片是游戏app里最最占空间的资源,所以请各位还没有理解u3d对图片文件存储方式理解的请看<unity3d-t ...

随机推荐

  1. Linux下/boot目录

    /boot目录存放的是开机所需的文件----内核,开机菜单,及所需配置文件等: (1)系统Kernel的配置文件: (2)启动管理程序GRUB的目录,里面放的都是GRUB在启动时所需要的画面.配置及各 ...

  2. 【EF学习笔记07】----------加载关联表的数据 贪婪加载

    讲解之前,先来看一下我们的数据库结构:班级表 学生表 贪婪加载 //贪婪加载 using (var db = new Entities()) { var classes = db.Classes.Wh ...

  3. Orcle基本语句(一)

    --创建学生信息表,约束放在所有列定义之后 CREATE TABLE stu_info( stu_id INTEGER, stu_name NVARCHAR2() NOT NULL, stu_sex ...

  4. oracle rownum paging issues

    rownum是oracle预处理字段,默认标序是1,只有记录集已经满足条件后才会进行后续编号.由于第一条记录rownum默认是1,而你的条件是rownum>=6 对第一条记录比较它的rownum ...

  5. VC++ CButton::SetCheck 的使用方法

    CButton::SetCheck void SetCheck(int nCheck); 参数 nCheck 指定检查状态. 此参数可以是下列值之一: 值                        ...

  6. 三天没有写题了,罪过!--Hash Table Start

    (1)Island Perimeter 解题思路: 在矩阵上循环并记录岛(1)的个数;如果当前节点是岛,则检查其是否具有任何右邻居或下邻居,有的话邻居计数加1 ;岛的周长结果为islands * 4 ...

  7. Android菜鸟成长记1--环境的搭配和第一个项目的构建

    一.配置Android环境 1.下载JavaJDK的本地,然后拷贝出来(因为Android实在java的基础上开发的,所以要先配置java环境) 2.java环境变量的配置 配置方法(我的电脑上-&g ...

  8. Extjs学习笔记--Ext.tree.Panel

    Ext.create('Ext.tree.Panel', { title: 'Simple Tree', width: 200, height: 150, store: store, rootVisi ...

  9. SharedPreferences的基本数据写入和读取

    1.布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...

  10. Python全栈--7.3--模块补充configparser--logging--subprocess--os.system--shutil

    模块补充: 一.configparser用于处理特定格式的文件,其本质是利用open来操作文件 继承到2版本 configparser 实现了更多智能特征,更有壳预见性,新的应用更偏好这个版本, 处理 ...