本文是基于上一篇<SQLServer 2012之AlwaysOn -- 指定数据同步链路,消除网络抖动导致的提交延迟问题>的问题继续进行优化:具体背景请参照上文:     前后折腾了一个多月,最近终于把这块难啃的骨头搞定了.问题只是出在网卡的高级功能上:     解决方案:关闭网卡的高级功能Jumbo Mtu和Large Send Offload V2     问题分析:根据Broadcom Ethernet 网络适配器的解释 Jumbo Mtu Jumbo Mtu 属性允许网络适配器发送和接…
这是上周遇到的一个案例:对已有的硬件进行升级而引发的问题,期间还触发了一个比较严重的BUG,可谓多灾多难:不过值得庆幸的是,在一连串连锁问题出现的时候,并没有出现人工操作失误(这往往是在处理故障中风险最高.影响最大的问题)而扩大故障影响范围: ==========================华丽丽的分割线========================== 先说一下环境: 我做的是跨机房3节点alwayson: 部署方面:3个节点中,两个位于主机房,同步模式,另外一个位于异地机房,跨子网异步…
原文:SQL Server AlwaysON 同步模式的疑似陷阱 SQL Server 2012 推出的最重要的功能之一Alwayson,是一个集之前Cluster和Mirror于一体的新功能,即解决了Cluster依赖共享存储的问题,又解决了镜像不能实时读以及转移后连接串需要添加转移IP的问题,看起来的确很实用. 而且Alwayson多副本的功能为实现读写分离提供了可能,试想一下,当主副本压力比较大的时候,是否可以将读操作引向辅助副本呢?答案一般来讲是肯定的,请注意,是一般! Alwayson…
原文:SQLServer 2012异常问题(二)--由安装介质引发性能问题 问题描述:生产环境一个数据库从SQLSERVER 2008 R2升级到SQLSERVER 2012 ,同时更换硬件,但迁移后发现性能明显下降,应用写入.读取性能下降的比较厉害: 向微软寻求帮助后得出答案,原来这与SQLSERVER的安装介质有关. 大致意思是说由于NUMA架构可以自行管理内存池,在安装了CAL的EE后,由于限制只能使用20个cores,同样内存则只能管理到20个cores涉及到的NUMA的对应的内存空间(…
我们经常在debug模式下使用一些性能检测工具,例如blockCannary,leakCannary.Stetho等,但是我们release的时候又不需要这些检测工具,通常情况下我们的做法是在build.gradle中写上debugImplementation “xxx.xxx.xxx.xxx”这样代码里写入BuildConfig.DEBUG来实现是否调用相关方法,但是发release版本的时候没有引入这些类又会报错,所以只能手动去注释掉代码.这是何等的麻烦. 因此我们需要一些其他的方法来解决这…
事件起因:近期有研发反应,某数据库从08切换到12环境后,不定期出现写操作提交延迟的问题: 事件分析:在排除了系统资源争用等问题后,初步分析可能由于网络抖动导致同步模式alwayson节点经常出现会话超时等待提交的问题导致.…
最小安装模式下的Centos7.*系统默认情况下,网卡是不启动的.为了解决联网问题,自己搜集了点资料,成功连接了网络.并梳理了下处理过程. 1.首先运行ip addr命令,查看配置文件的名称.有的文章一上来就说,修改某一个目录下的某一个文件.这样写是非常误导读者的,因为每个centos下的网卡配置文件名称不尽相同.以我本地的安装环境为例,运行该命令后,结果如下: 根据这个显示,本地的配置文件为:eno16777736. 2.在命令行中用cd命令逐层进入/etc/sysconfig/network…
PPPcode{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && document.readyState && document.readyState === "complete") { window.setTimeout(function() { hljs.initHighlighting(); }, 0);} .main-contain…
IIS性能优化 1.调整IIS高速缓存 HKEY_LOCAL_MACHINE SystemCurrentControlSetServicesInetInfoParametersMemoryCacheSize MemoryCacheSize的范围是从0道4GB,缺省值为3072000(3MB).一般来说此值最小应设为服务器内存的10%.IIS通过高速缓存系统句柄.目录列表以及其他常用数据的值来提高系统的性能.这个参数指明了分配给高速缓存的内存大小.如果该值为0,那就意味着"不进行任何高速缓存&qu…
自己在VMware虚拟机中开启一台主机的时候,发现比以往的开机速度慢了好多,起初不以为然,直到用Xshell通过ssh远程连接eth1的ip地址才发现连接失败(这个ip是之前eth1正常的时候获取的ip地址),后来用ifconfig命令发现eth1这个网卡并没有获取IP地址,eth1这个网卡设置的仅主机模式,并通过宿主机的VMware dhcp服务获取ip地址.发现了eth1网卡异常之后,重启network服务,发现eth1还是获取不到ip,效果图如下.随后重温了一下dhcp的工作原理,大致流程…
前言:一个应用的成功=产品设计*性能 ,再此我们不讨论一个应用的设计,那交给我们可爱又可恨的产品经理和UI设计师来决定!所以这里分步骤讨论如何提升一个应用的性能,这里先探讨布局优化问题. 布局优化 避免过度回执(Overdraw),由于过度绘制会浪费很多的CPU,GPU资源, 检查方法: 通过打开开发者选项–>GPU模式呈现分析–>在屏幕上显示为条形图.然后就会看到如下图的情况,最好用真机,模拟器回执有问题.  你可以观察一下绘制的条形图 tips:每一条柱状线都包含三部分,蓝色代表测量回执D…
很多文件系统都自带iperf 命令,所以不用作多的移植工作. 如下查看他的帮助信息. Qt@aplex:~$ iperf -h Usage: iperf [-s|-c host] [options] iperf [-h|--help] [-v|--version] Client/Server: -f, --format [kmKM] format to report: Kbits, Mbits, KBytes, MBytes -i, --interval # seconds between pe…
公司在使用Odoo进行内部信息化管理,随着业务增长,服务器性能问题变成了瓶颈,为了解决这些问题,最近的工作重点将移到性能调整上来,同时也会在此记录整个处理过程,以便日后回顾. 1.根据相关资料建议,在linux文件系统有一个预读的参数,可以通过如下命令查看: blockdev --getra /dev/sda 一般的默认值为256,我们可以将此数据改大一点,建议的范围是在4096-16384之间,预读不足的常见问题是写磁盘的速度要比读取的速度要高. 改变参数的命令格式是:blockdev --s…
背景 <SQL Server 2012实施与管理实战指南>中指AlwaysON同步过程如下: 任何一个SQL Server里都有个叫Log Writer的线程,当任何一个SQL用户提交一个数据修改事务时,它会负责把记录本次修改的日志信息先记入一段内存中的日志缓冲区,然后再写入物理日志文件(日志固化).所以对于任何一个数据库,日志文件里都会有所有数据变化的记录.对于配置为AlwaysOn主副本的数据库,SQL Server会为它建立一个叫Log Scanner的工作线程.这个线程专门负责将日志记…
sync 模式是属于tap 的操作,同步模式下,tap 需要提交 schema. record .state message, singer 指南对于每种 类型有详细的说明 streams 每个stream 的metadata 包含了详细的用来进行sync 操作的控制说明 replication 方法 taps 支持两种类型的同步 INCREMENTAL 进行增量同步申明,只有新数据,以及更新的数据在同步的时候会被复制 FULL_TABLE 一般都是按照起始时间,在每次同步的时候都需要同步,实际…
如果说数组是 PHP 的精髓,数组玩得不6的,根本不能算是会用PHP.那协程对于 Swoole 也是同理,不理解协程去用 Swoole,那就是在瞎用. 首先,Swoole 只能运行在命令行(Cli)模式下,所以我们开发调试都是使用命令行,而不是 php-fpm/apache 等. 在 Swoole 中,我们可以使用`\Swoole\Coroutine::create()`创建协程,或者你也可以使用简写`go()`. 初识 Swoole 协程 go(function(){ go(function(…
MySQL主从复制之半同步模式 MySQL半同步介绍: 一般情况下MySQL默认复制模式为异步,何为异步?简单的说就是主服务器上的I/O threads 将binlog写入二进制日志中就返回给客户端一个结果,无需等待二进制日志是否成功发送到从库和从库上是否成功完成relay log的写入和SQL threads从relay log中提前二进制日志写入自己binlog的过程,异步模式的缺点就是一旦主库写入binlog日志后发生宕机,此时从库还未完成对主库传送过来binlog的读写存储操作,那么从库…
设置为混杂模式ifconfig eth2 promisc取消设置ifconfig eth2 -promisc ------------------------------------------ 下面为参考:http://blog.chinaunix.net/uid-23849526-id-146675.html在交换环境下面设为混杂模式网卡也收不到所有的包,因为交换机分割了冲突域.只能收到广播包.附:  网卡一般有四种模式:◆广播方式:该模式下的网卡能够接收网络中的广播信息.◆组播方式:设置在…
前言 决心要花费宝贵时间写下这篇心得,是因为从昨天晚上到今天上午被这个VMWare模拟搭建的服务器集群不能上外网的问题搞得很心烦,最后决定跟它杠上了!上午还通过远程连接得到了“空白”同学的帮助,在此表示十分感谢.虽然到今天中午的时候经过帮助能上外网了,但是自己感觉还是没有彻底弄懂,对三种模式下的网络结构还是一知半解,上网查了很多资料,但是发现网上很多文章有许多误导.于是自己又从VMWare的三种模式出发,查资料,最后终于算是捋顺了. 写下这篇文章,一是让自己的逻辑得到锻炼,二是希望能帮到部分同学…
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78513483 一般情况下,Android Dex文件在加载到内存之前需要先对dex文件进行优化处理(如果Android Dex文件已经优化过,则不需要进行优化处理操作,后面进行加载到内存即可),在Dalvik虚拟机模式下,Android dex文件经过dex2oat进程优化为odex文件,在ART虚拟机模式下,Android dex文件经过dex2oat进程优化为oat文件-OA…
新一代读写分离技术——AlwaysOn 早在SQL Server 2005的时候微软就已经实现了数据库的查询分离技术——发布订阅.但生产库和查询库的同步性能较差,时常出现性能问题,因此在大型生产环境中一直被人所诟病. 从SQL Server 2012开始,微软逐渐使用AlwaysON技术来取代发布订阅.AlwaysOn 作为SQL Server 2012引入的一种新的技术架构,性能相比发布订阅而言提升很多,最明显的区别在于其充分利用内存高效读取的原理来实现日志的传递.下文将通过AlwaysOn的…
http://www.cnblogs.com/diabloxl/p/3623640.html?utm_source=tuicool&utm_medium=referral 公司这边性能组老师进行性能测试 发现智能用到20个core 同事排查到了问题原因, 正好博客园里面有一个blog 详细描写了 这个区别. 转帖一下, 感谢原作者. 后续再仔细看看这一块. 问题描述:生产环境一个数据库从SQLSERVER 2008 R2升级到SQLSERVER 2012 ,同时更换硬件,但迁移后发现性能明显下降…
我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划, 在生成执行计划之前会去缓存中查找执行计划 如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会重用这个执行计划缓存,避免编译,从而提高效率, 对于开发者来说,为了达到能够重用执行计划的目的,使用参数化的sql是一个必要的条件. 除了参数化的sql,对于即席查询或者是动态生成的查询语句,也就是非参数化的sql语句,SqlServer本身也在对一些sql进行自动优化处理. 在SqlServer层…
实际需求很普遍,比如求销售数据的每天与头一天的销售增长量.这里用一个汽车行驶数据来做例子: 先初始化数据: CREATE TABLE [dbo].[CarData]( [CarID] [int] NULL, [Mileage] [int] NULL, [M_year] [int] NULL, [M_Month] [int] NULL, [M_Day] [int] NULL ) ON [PRIMARY] GO , , , , ) , , , , ) , , , , ) , , , , ) , ,…
用户模式下的线程同步 系统中的线程必须访问系统资源,如堆.串口.文件.窗口以及其他资源.如果一个线程独占了对某个资源的访问,其他线程就无法完成工作.我们也必须限制线程在任何时刻都能访问任何资源.比如在一个线程读内存时要限制其他线程对此块内存进行写入. 线程之间的通信很重要,尤其是在以下两种情况下: 1:需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性. 2:一个线程需要通知其他线程某项任务已经完成. 线程同步包括许多方面,windows提供了许多基础设施使线程同步变得容易. 用户模式…
Windows核心编程 第八章 用户模式下的线程同步 1. 线程之间通信发生在以下两种情况: ①    需要让多个线程同时访问一个共享资源,同时不能破坏资源的完整性 ②    一个线程需要通知其他线程某项任务已经完成 2. 原子访问 所谓原子访问就是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源. CPU一个最小操作单位并不是一条编程语言指令,所以即使在线程中只有一行赋值语句,在CPU看来却不是一条语句,所以如果两个线程中有同样的一行赋值语句,那么也可能会发生不可预料的…
将项目部署到服务器后发现有如下问题,查了网上好多说是需要被序列化的类没有写上[Serializable]标志,所以把全部需要序列化的列都写上了标志发现还是不是,最后查到了发现网上说的并不太准确,而是需要在Session用到的类上面需要加[Serializable]标志 无法序列化会话状态.在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象.如果自定义会话状态存储在“Custom”模式下…
线程同步分为用户模式下的线程同步和内核对象的线程同步. 当然用户模式下的线程同步实现速度比内核模式下快,但是功能也有局 //1.利用原子访问: Interlocked系列函数,关于Interlocked系列函数,我需要知道的是他们,执行的极快 //(1)首先是InterlockedExchangeAdd兄弟函数, //第一个参数 Addend 代表进行操作数的地址, //第二个参数 Value 代表增加的值,如果是想进行减法,传负数即可 LONG InterlockedExchangeAdd(…
Github https://github.com/gongluck/Windows-Core-Program.git //第8章 用户模式下的线程同步.cpp: 定义应用程序的入口点. // #include "stdafx.h" #include "第8章 用户模式下的线程同步.h" LONG g_i = 100; LONG g_b = FALSE; CRITICAL_SECTION g_cs; //关键段 SRWLOCK g_rw; //读写锁 CONDITI…
关于:“无法序列化会话状态.在“StateServer”或“SQLServer”模式下,...的问题 错误描述: 无法序列化会话状态.在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象.如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制 我在Web.Config里配置mode="StateServer"时出现以上错误:<sessionSt…