Benchmark

技术分享 | MTS并行增量应用

走远了吗. 提交于 2019-11-30 20:44:12
原创作者: 爱可生开源社区 MySQL 的复制延迟在早期版本一直存在,MySQL 5.6.3 版本后开始支持并行复制,并在 5.7进一步完善可用并行复制功能,官方将该功能称为 enhanced multi-threaded slave (简称 MTS) ,从此复制延迟问题得到很大的改善。 功能背景 DTLE([爱可生数据传输组件])项目组在 2018年9月4日提出内部功能性需求(issue #211)实现支持 MTS 并行回放功能。 https://github.com/actiontech/dtle 1.MTS (MySQL 5.7) 原理三 问 1)首要问题:哪些 TX 可以并行回放?(无冲突!!!) 同一 group_commit 的 TX 可以并行回放,因为这些 TX 都进入了 prepare 阶段,事务之间无冲突。 2)如何记录同一 group_commit ? 每个 TX 都有 sequence number,同一个 binlog file 中 SeqNum 单调递增 group_commit 时记录上一次 (group_) commit 的 TX 的 sequence number, 称为 LastCommit (LC) 3)如何并行回放? LC 相同的 TX 可以并行回放 LC 更大的 TX 需等待前一组 TX 全部执行完 (MySQL 8.0 引入

mac下redis安装、设置、启动停止

心已入冬 提交于 2019-11-29 21:02:47
常用命令说明 redis服务器:redis-server redis客户端:redis-cli redis性能测试工具:redis-benchmark AOF文件修复工具:redis-check-aof RDB文件修复工具:redis-check-rd redis设置临时密码:config set requirepass 密码 redis获取临时密码:config get requirepass 启动和停止 服务端启动 默认启动 如上,在命令redis-server即启动redis服务端。且接受客户端连接 根据设置启动 在 /usr/local/redis目录下建立bin,etc,db三个目录 把/usr/local/redis/src目录下的mkreleasehdr.sh,redis-benchmark, redis-check-rdb, redis-cli, redis-server拷贝到bin目录 在etc下,新建配置redis.conf,内容如下。 /usr/local/redis下新建日志文件log-redis.log,并修改当前用户使用权限。sudo chown -R shoren /usr/local/redis/ 启动服务端:redis-server /usr/local/redis/etc/redis.conf #修改为守护模式 daemonize yes

浅析ECCV18 DeepMind论文《Look, Listen and Learn》

左心房为你撑大大i 提交于 2019-11-29 20:55:06
背景 声音和图像是视频中最重要的两类基础信息,能反映视频中出现的主要内容。以往大量的视频内容分析研究都是基于声音和视觉特征来展开,其中很多研究工作会基于声音视觉多模态特征来进行语义建模。人们清楚地意识到声音和视觉特征直接存在着某种对应关系,因为当某种语义内容在视频中出现时,其相应的视觉图像和声音必然相伴出现,那么该如何利用这个对应关系来帮助我们进行视频语义内容分析与识别呢? 让我们先来看看当前机器学习与视频分析研究的痛点。机器学习按照对样本的标注要求不同可分为有监督和无监督两大类。随着深度学习的兴起,基于大量标注样本训练的深度网络模型在各领域中都取得了远超其它模型的准确率,确立了主流地位。但是这一方法最大的缺点是需要大量的标注样本,样本标注是一项很高成本的工作,需要耗费大量的人力资源,使人工智能成为真正基于“人工”的智能。在视频内容分析领域,为了达到识别视频内容的目的,也需要对视频进行大量的样本标注,这些标注包括目标、语义在时间空间上出现的位置、类别标签等,非常繁琐。如何能够减少对标注数据的依赖一直是一个机器学习的重要研究方向。 回到先前的问题,既然视频中的视觉和声音之间存在着对应关系,那么是否可以用这个对应关系来解决数据的标注问题,从而减少对人工标注的依赖呢?DeepMind大胆的提出了这一设想,通过视觉和声音的对应实现它们之间的互标注,不需要人工标注

mac系统安装redis

自古美人都是妖i 提交于 2019-11-29 07:11:12
1.下载 打开官网: https://redis.io/ Download---Stable---Download3.2.8,下载最新稳定版,这里是3.2.8 2.安装 下载完成后,打开命令行工具,执行解压命令 tar zxvf redis-3.2.8.tar.gz 将解压后文件夹放到/usr/local mv redis-3.2.8 /usr/local/ 切换到相应目录 cd /usr/local/redis-3.2.8/ 编译测试 sudo make test 编译安装 sudo make install 启动Redis redis-server 3.配置 在redis目录下建立bin,etc,db三个目录 sudo mkdir /usr/local/redis-3.2.8/bin sudo mkdir /usr/local/redis-3.2.8/etc sudo mkdir /usr/local/redis-3.2.8/db 把/usr/local/redis/src目录下的mkreleasehdr.sh,redis-benchmark, redis-check-rdb, redis-cli, redis-server拷贝到bin目录 cp /usr/local/redis-3.2.8/src/mkreleasehdr.sh . cp /usr/local/redis-3

Java性能优化-字符串和数字构造

戏子无情 提交于 2019-11-29 02:03:20
本博客来自我的新书Java性能优化(暂定名),第二章的节选2.1和2.2,2.10. 也欢迎购买我的书 《Spring Boot 2 精髓 》 2.1 构造字符串 字符串在Java里是不可变的,无论是构造,还是截取,得到的总是一个新字符串。看一下构造一个字符串源码 private final char value[]; public String(String original) { this.value = original.value; this.hash = original.hash; } 原有的字符串的value数组直接通过引用赋值给新的字符串value,也就是俩个字符串共享一个char数组,因此这种构造方法有着最快的构造。Java里的String对象被设计为不可变。意思是指一旦程序获得了字符串对象引用,不必担心这个字符串在别的地方被修改,不可变意味着线程安全,在第三章对不可变对象线程安全性又说明。 构造字符串更多的情况构造字符串是通过一个字符串数组,或者在某些框架的反序列化,使用byte[] 来构造字符串,这种情况下性能会非常低。 如下是通过char[]数组构造一个新的字符串源码 public String(char value[]) { this.value = Arrays.copyOf(value, value.length); } Arrays.copyOf

滴滴开源 Levin:数据闪电加载方案

拈花ヽ惹草 提交于 2019-11-29 01:33:09
1.背景 互联网某些业务场景下,我们常会遇到这种情况:服务启动需要加载大量数据到内存,数据规模达数十G,数据更新频率较低(天级、小时级、分钟级),使用方式为静态查询。如业务订单数据、线下挖掘的策略规则,地图路网数据等。而在线服务基于稳定性考虑通常至少加载双版本数据,服务启动通常需要数分钟之久。暴露的问题包括服务上线旷日持久,人力成本高;需求排队无法快速迭代,时间成本高;回滚速度慢,由于要加载大量数据故障实例无法快速恢复造成稳定性隐患。 如同闪电(Levin)一般快速加载启动是根治这类问题的灵丹妙药。Levin是针对上述低频更新、静态使用、大规模数据的快速加载方案,高效托管大规模静态数据,加速大内存服务冷启动和热加载。 2.原理 服务启动唯快不破,但是在单纯的服务变更场景中(比如上线、回滚、故障恢复)虽然并不涉及任何数据变更,服务进程重启导致堆和栈内存数据都会随之消亡,启动后需要重新加载数据。那么数据能不能在进程间传递复用呢?最高效的进程间数据传递方式就是共享内存,共享内存可以突破进程生命周期实现跨进程重用,并且具有内存对象访问效率和充足的可用地址空间(下图Memory Mapping Area),鱼(启动速度)与熊掌(查询效率)可以兼得。 Levin1.jpg 再考虑数据更新场景,通常指数据版本切换,此时磁盘数据读取在所难免,那么从数十G的数据文件到内存数据对象(通常为STL容器)

使用CodeBenchmark对逻辑代码进行并发测试

送分小仙女□ 提交于 2019-11-28 19:29:04
一直对性能测试比较感兴趣,所以也写了不少的测试工具有 WebApiBenchmark 和 TcpBenchmark 等;但这些工具测试都是有针对性和配置的方式来进行功能有限所以很难适用更多的场景,所以单独开发一个组件 CodeBenchmark 来解决不同业务代码下的性能测试;严格来说 CodeBenchmark 并不算一个完整的测试工具,它提供一个测试管理功能和测试环境,可以对实现某一规则业务代码进行一个并发测试并提供一个最终的测试结果.以下主要介绍如何使用 CodeBenchmark . 环境要求 CodeBenchmark 是基于 netstandard2.0 开发,适用于支持这一版本的 .net core 和 .net framework 环境;运行系统则看情况需要可部署到 linux 或 windows ,开发语言 c# . 构建测试项目 可以通过 vs 或 vscode 构建一个控制台项目然后引用组件(引用最新版本的 BeetleX.CodeBenchmark ) Install-Package BeetleX.CodeBenchmark -Version 0.6.2 引用组件后就可以编写具体的测试用例,测试用例编写必须符合组件测试要求,所以需要实现一个接口来编写测试代码,接口描述如下: public interface IExample:IDisposable {

使用apache benchmark(ab) 测试报错: apr_socket_recv: Connection timed out (110)

荒凉一梦 提交于 2019-11-27 20:09:08
使用apache benchmark(ab) 测试报错: apr_socket_recv: Connection timed out (110) 使用ab( apache benchmark )测试的时候,使用如下命令: ab -n 15000 -c 200 http://localhost/abc/abc.php 执行操作一定条数,或连续执行该命令会出现如下问题: apr_socket_recv: Connection timed out (110) 网上有说是资源描述符的问题,用ulimit -n 65536解决,试过不行。 查看系统日志: dmesg 显示大量下面错误 nf_conntrack: table full, dropping packet. 通过google后,加入如下参数 1 2 3 4 5 6 7 vi /etc/sysctl.conf net.nf_conntrack_max = 655360 net.netfilter.nf_conntrack_tcp_timeout_established = 1200 sysctl -p /etc/sysctl.conf    修改后,重新启用apache ab 进行测试,问题解决。 重新观察这两个参赛发现,第二个参数与netfilter相关, 来源: oschina 链接: https://my.oschina