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,然后點擊確定

驗證
復制分發代理
復制分發代理是一個可執行文件,它能將快照(對于快照復制和事務復制)和保存在分發數據庫表中的事務(對于事務復制)移動到訂閱服務器上的目標表中。
若要啟動分發代理,請從命令提示符下執行 distrib.exe
打開任務管理器,查看分發代理進程的進程ID(PID),然后打開Microsoft Process Monitor 3.10,設置篩選條件

看一下length,最大的包也不會超過1024,說明設置生效了




總結
文章列表