自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

手边笔记

好记性不如烂笔头~

  • 博客(137)
  • 资源 (14)
  • 论坛 (7)
  • 收藏
  • 关注

原创 brpc线程模型和网络模型

brpc线程模型和网络模型1. 简单介绍本文主要介绍brpc的线程模型,以及网络请求处理的整个流程。1.1 brpc线程模型简介bthread是brpc使用的M:N线程库,目的是在提高程序的并发度的同时,降低编码难度,并在核数日益增多的CPU上提供更好的scalability和cache locality。”M:N“是指M个bthread会映射至N个pthread,一般M远大于N。由于linux当下的pthread实现(NPTL)是1:1的,M个bthread也相当于映射至N个LWP。bthre

2021-03-12 18:16:27 265

原创 网络故障模拟工具

在做异常测试时需要模拟网络异常,经常使用的模拟工具有tc和iptables。1. tctc(traffic control)一般用来做精细的网络故障模拟。模拟网络延迟:# 1. 将 eth0 网卡的传输设置为延迟 100 毫秒发送:**# tc qdisc add dev eth0 root netem delay 100ms## 2. 将 eth0 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送# tc qdisc add dev eth0 r

2021-04-08 11:28:34 58

原创 Mellanox网卡参数调优

为了提高IPv4和IPv6的流量性能,可以使用Linux sysctl命令修改操作系统设置的默认系统网络参数。但是,需要注意,更改网络参数可能会在不同的系统上产生不同的结果。结果显著依赖于CPU和芯片组的效率。ref:https://community.mellanox.com/s/article/linux-sysctl-tuninghttps://community.mellanox.com/s/article/performance-tuning-for-mellanox-adaptersh

2021-04-07 14:33:16 258

原创 socket的O_NONBLOCK以及TCP_NODELAY

设置socket的O_NONBLOCK以及TCP_NODELAY1. no-blocking将socket设置为no-blocking意味着socket收发数据都是非阻塞的,相比于阻塞方式,需要特殊处理这个错误码:EWOULDBLOCK or EAGAIN(这两个错误码是一样的,都是35),进行重试或者重新调度。将socket设置非阻塞有多种方法,下面会一一汇总。1.1 fcntl设置O_NONBLOCKPOSIX的fcntl用的比较广泛,兼容性也比较好,优先推荐使用fcntl来设置,缺点是需要两

2021-04-07 14:19:15 279

翻译 在c++中实现一个good spinlock

在c++中实现一个good spinlock网上有很多关于spinlock不好的实现。他们都犯了相同的错误:在RMW(read-modify-write)操作上自旋。我后面会说明为什么这些实现不好,也会介绍如何在C++中实现一个好的spinlock,并且这个实现很容易迁移到其他编程语言中。在本文的最后提供了完整的spinlock实现。一个bad spinlock实现最基本的自旋锁使用一个boolean值(或1个bit)来表示锁是否被持有。要获取锁,使用原子交换操作将boolean值设置为true。

2021-03-30 17:45:15 33

原创 double free or corruption错误定位

“double free or corruption”错误定位1. 测试程序先写一个简单的测试程序模拟double free错误:// file: t.c#include <stdlib.h>void *func1(size_t size) { return malloc(size);}void func2(void *p) { free(p);}int main() { char *ptr = func1(sizeof(char));

2021-03-17 12:36:30 245

原创 通过火焰图查看调用栈

1. 将火焰图的项目clone下来# git clone https://github.com/brendangregg/FlameGraph.git2. 采集数据:# sudo perf record -F 99 -p $PID -g -- sleep 303. 查看每个调用栈的百分比# perf report -n --stdio4. 生成火焰图# perf script -i perf.data &> perf.unfold# ./stackcollapse-per

2021-03-10 16:46:36 41

原创 使用perf分析网络系统调用栈

使用perf分析网络系统调用栈1. 增加事件比如增加了如下网络通信相关的系统调用:# perf probe --add sys_writev='sys_writev'# perf probe --add sys_writev_exit='sys_writev%return'# perf probe --add vfs_writev_exit='vfs_writev%return'# perf probe --add do_readv_writev_exit='do_readv_writev%re

2021-03-10 16:30:56 135

原创 CEPH OSD_SCRUB_ERRORS 错误处理

1. 错误描述# ceph health detailHEALTH_ERR 1 scrub errors; Possible data damage: 1 pg inconsistentOSD_SCRUB_ERRORS 1 scrub errorsPG_DAMAGED Possible data damage: 1 pg inconsistent pg 2.33c6 is active+clean+inconsistent, acting [355,138,29]2. 问题定位查看对应

2020-12-23 10:09:49 659 2

原创 CEPH架构总体说明
原力计划

文章目录1. Ceph架构说明1.1 整体架构图1.2 接口类型1.2.1 RBD1.2.2 CephFS1.2.3 RadosGW1.3 RADOS2. RADOS概念介绍2.1 Monitor2.2 RADOS对象存储2.3 pool和PG2.4 对象寻址过程2.5 对象读写2.6 数据均衡2.7 Peering2.8 Recovery&Backfill2.9 纠删码2.10 快照和克隆2.11 Cache Tier2.12 scrub3. 参考资料1. Ceph架构说明1.1 整体架构图

2020-05-15 11:30:09 228

原创 对象存储相关工作总结

TODOref:https://www.163yun.com/help/documents/68792520222625792

2020-05-14 17:56:56 100

原创 HDFS集群数据迁移方案-distcp

HDFS集群数据迁移方案-distcp1. 原理distcp原理是在Hadoop集群中使用MapReduce分布式拷贝数据。2. 资源消耗源集群有只有数据读取和网络传输的消耗目的集群需要执行MapReduce任务,并且有数据写入的消耗(3副本需要有3倍的写入)3. 兼容性同版本集群拷贝(或者协议兼容版本之间的拷贝)使用HDFS协议hadoop distcp  hd...

2020-04-17 10:43:24 436

原创 EC纠删码理论介绍

文章目录纠删码理论介绍1 什么是EC?2 EC(4+2)编解码简介3 EC的数学原理4 EC存储的优缺点纠删码理论介绍1 什么是EC?EC:纠删码-Erasure Code,是一种编码理论:EC是纠错码的一种,通过增加校验片,保证数据可靠性。特性:将数据分成k个分片,生成m个校验片,假设n=k+m,在n个分片中任意选取k个分片,就可以将原始数据恢复回来。EC不仅应用在存储领域,通信...

2020-04-17 10:23:31 1367

原创 研发过程管理与质量控制

质量控制是研发过程管理非常重要的一环,需要考虑到从需求的产生到最终功能上线,以及后续的运维工作,甚至是故障的处理。方方面面都需要考虑到。具体包含如下环节。需求:需求分析、需求评审、需求排期设计:总体设计、接口设计、详细设计、邮件讨论、方案评审、signoff机制实现:功能开发、单元测试、开发冒烟、性能自测、CodeReview、提测邮件测试:用例评审、功能测试、性能测试、异常测试、稳...

2019-10-22 09:46:59 752

原创 对象存储数据可靠性技术

1. 概述对象存储能够提供海量、安全、低成本、高可靠的云存储服务,使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本,并提供99.999999999%的数据可靠性。2. 可靠性定义数据的可靠性,即丢失数据的可能性,类似于数据库系统中ACID中的D,数据的持久性,一旦在系统中成功写入数据,那么这条数据不应该丢失。对象存储可靠...

2019-10-17 15:18:48 491

原创 数据湖技术说明

1. 为什么要做存储和计算分离?随着数据量的增长,存储和计算资源的使用率严重不均衡从数据的生命周期来看,存在冷热数据分层的现象2. 数据仓库和数据湖有什么不同?一是存储数据类型不同二是数据处理模式不同三是服务对象不同3. 数据湖的优势一是数据集成方式简单二是加速数据准备过程三是具备更好的可扩展性四是系统建设成本更低五是便于创建智能化分析应用4. 数据湖的未来相对...

2019-10-17 15:11:32 375

原创 消息队列使用场景汇总

在工作中经常会用到消息队列(MQ),消息队列适用的场景有哪些呢?消息处理的方式有哪些?1. 功能场景解耦削峰填谷最终一致性广播消费无限重试2. 消息处理exact onceat least onceat most once3. 其他TODO...

2018-06-23 14:26:08 313

原创 ElasticSearch查询操作最大sharding数目限制

ElasticSearch查询操作最大sharding数目限制1. 问题说明在ES中做一个大范围的查询时,经常会报这个错误:{ "error":{ "root_cause":[ { "type":"illegal_argument_exception", "reaso...

2018-05-08 23:27:00 6942

原创 ElasticSearch运维手册

ElasticSearch运维手册0. 介绍主要介绍了ES常用的在运维过程中可能会用到的一些命令。1. 查看ES集群中节点信息查看ES集群中所有节点信息,以及各个节点内存和CPU相关的指标$ curl -X GET 'http://192.168.5.1:9200/_cat/nodes?v'ip heap.percent ram.percent...

2018-04-12 22:55:01 3513

原创 ELK性能优化说明

ELK性能优化简要说明1. 系统部署说明 组件 机器配置 说明 ElasticSearch&amp;Kibana 3 * (32 core + 128GB mem + SAS 3.6T*12) EK混部 Logstash 3 * (40 core + 32GB mem) 单独部署,比较耗cpu DS&amp;Kafka 5 ...

2018-03-31 17:35:05 4797

原创 Kibana查询语法详解

Kibana查询语法详解Kibana查询语法和Lucene相同,下面是Lucene的查询语法介绍。注意:Lucene查询语法不适合在程序中使用,程序中使用可以调用Lucene-API,API提供了丰富功能来组合定制你所需要的查询器,查询语法是为手工输入高级查询设计的,而不是为程序拼接语法串而设计的。1. 简单说明1.1 Terms一个查询将分解为若干Term以及操作符...

2018-03-31 17:33:47 47986

原创 数据库系统——关系型数据在磁盘上的存储布局

ELKtail可以使用ELKtail连上Elasticsearch,以tail的方式查看ES中的日志。 使用方式也和tail命令类似,下面是常用的使用方法介绍。基本用法elktail不加参数直接使用elktail不加任何参数,那么将会尝试连接localhost:9200,并且tail最近的logstash index,展示message字段信息$ ./elktai...

2018-03-31 17:32:23 671

原创 Elasticsearch介绍文档

Elasticsearch介绍文档0. 说明主要介绍ES的相关概念以及如何使用1. 一些概念索引-index - 一个索引就是一个拥有几分相似特征的文档的集合 - 相当于数据库中的database类型-type - 一个类型是你的索引的一个逻辑上的分类/分区 - 通常,会为具有一组共同字段的文档定义一个类型 - 相当于数据库中的table文档-docume...

2018-03-31 17:28:24 398

原创 netty系列3-Java BIO编程

网络模型基本的模型是client/server模型,client进程和server进行通信,server端做绑定IP,并绑定端口;client端向服务端监听的地址发起连接请求,通过三次握手建立连接。如果建立成功,双方就可以通过socket进行通信。

2017-11-10 10:17:33 256

原创 netty系列2-Linux网络IO模型

1. 阻塞和非阻塞阻塞和非阻塞描述的是IO函数,指访问某个函数时是否会阻塞线程(block,线程进入阻塞状态)2. 同步和异步同步和异步描述的是执行IO操作的主体是谁同步是由用户进程自己去执行最终的IO操作异步是用户进程自己不关心实际IO操作的过程,只需要由内核在IO完成后通知它既可,由内核进程来执行最终的IO操作3. IO分类3.1 阻塞IO模型阻塞IO指的是用户调用读写方法是阻塞的

2017-11-09 19:30:25 261

原创 netty系列1-JAVA IO演进之路

在JAVA1.4之前的版本,JAVA对I/O的支持并不完善,基于JAVA所有的Socket通信都是同步阻塞模式,这一模式虽然简化了开发难度,但是在性能和可靠性方面存在着巨大的瓶颈。在很长一段时间里,大型的应用服务器都是采用C/C++开发的。采用Java BIO开发的服务端软件只能通过不断扩容来满足高并发和低延迟,极大的增加了企业的成本。

2017-11-08 11:40:12 475

原创 性能测试应该怎么做?

两个原则平均值不靠谱吞吐量和响应时间要挂钩怎样做性能测试1 你得定义一个系统的响应时间latency,建议是TP99,以及成功率比如路透的定义:99.9%的响应时间必需在1ms之内,平均响应时间在1ms以内,100%的请求成功。2 在这个响应时间的限制下,找到最高的吞吐量测试用的数据,需要有大中小各种尺寸的数据,并可以混合。最好使用生产线上的测试数据。3 在这个吞吐量做Soak Te

2017-11-06 17:28:22 890

原创 利用Nginx的resolver实现动态upstream

之前写了篇文章用openresty实现了一个动态路由,虽然说是动态的,但是实际上还是需要将upstream在配置文件中写好,还是相当于静态的。最近工作中有这方面的需求,upstream是完全动态,由客户端来指定,开始的时候有一些错误,最后通过resolver指定dns服务来完成,具体流程如下。1. 开始采坑nginx的配置如下:worker_processes 1;events { wor

2017-09-15 00:01:13 32072 2

原创 redis性能分析工具redis-faina

redis性能分析工具redis-fainaredis-faina是一个通过解析redis的MONITOR命令,从而对redis实例进行性能诊断的工具。 该工具使用虽然简单,但是功能还是很不错,对于定位线上redis性能问题,确实是一把利器。

2017-08-10 18:30:14 4726

原创 AES加密算法工作模式详解

AES 加密算法,本文主要介绍AES不同工作模式的原理。

2017-07-28 19:11:15 822

原创 Nginx range过滤器整形溢出漏洞 (CVE–2017–7529)预警分析

Nginx range过滤器整形溢出漏洞 (CVE–2017–7529)预警分析:当使用nginx标准模块时,这允许攻击者如果从缓存返回响应,则获取缓存文件头,黑客可以通过缓存文件头获取包含IP地址的后端服务器或其他敏感信息,从而导致信息泄露。

2017-07-28 19:04:25 4744

原创 影响cache的几个http头部

Http的Cache机制总共有4个组成部分:Cache-Control、Last-Modified(If-Modified-Since)、Etag(If-None-Match) 、Expires

2017-07-07 20:11:53 575

原创 写io的几种模式

写io的几种模式buffer write 特点: a) 应用程序写入到page cache b) 操作系统 writeback 优缺点: a) 大部分情况直接写内存,速度很快 b) 数据完整性无法得到严格保证 c) 小部分写入受到系统回写影响,服务质量没有办法保证direct write 特点: a) 绕过操作系统cache,直接

2017-01-13 22:24:57 878

原创 硬盘监控

主要介绍了用MegaRaid工具监控硬盘状态。TODO:lsiutil

2016-10-27 10:29:37 708

原创 openresty-lua代码的语法检查

lua 代码的语法检查可以如下命令:$ luajit -bl foo.lua > /dev/nullref: https://github.com/openresty/lua-nginx-module/issues/436

2016-07-21 15:08:38 2629

原创 HBase1.0+ java-api 介绍

在网上查了hbase的java client api的介绍,发现很多都是之前的版本,虽然现在还可以运行,但是里面有很多不建议使用(@deprecated)的class及相关方法。其中很关键的就是增加了`Connection`类,使其给人感觉更像一个专业的客户端api,还有就是用`Admin`替换了`HBaseAdmin`,还有一些细节上的修改。

2016-07-07 10:32:59 2814

原创 Raid10环境下的硬盘替换

Raid10环境下换硬盘还是很简单的,支持热插拔,直接拔下换掉就可以了,下面是操作步骤。

2016-06-29 11:49:44 9679

原创 openresty-IP字符串转数字

IP字符串转换成数字

2016-06-28 11:44:56 1786

原创 MySQL: 忘记root用户密码

1. 杀掉正在运行的mysqlkillall -TERM mysqld2. 启动mysqlPATH_TO_MYSQL/bin/mysqld --skip-grant-tables &3. 修改密码mysql> use mysqlmysql> update user set password=password("new_pass") where user="root";mysql> flush p

2016-05-30 16:20:53 382

原创 Linux统计指定端口流量

统计指定端口流量

2016-05-30 09:20:55 10659 2

苹果公司安全编程手册

苹果公司的安全编程手册,coder可以看看这个。主要介绍编码规范之类的。

2014-04-24

ceph资料打包大汇总.zip

里面包含3本PDF文档: 1. ceph.pdf:ceph知识树结构思维图 2. Ceph架构剖析.pdf:总结了CEPH整体架构 3. Ceph Cookbook.pdf:《Ceph Cookbook》中文版,目录、内容清晰 4. Learning Ceph.pdf:《Learning Ceph》英文电子版,目录、内容支持粘贴复制

2020-05-15

存储技术介绍

该文档是ppt格式,是一位存储大牛做讲座用的ppt,做的很详细。 目录: 1. 网络存储介绍 2. 备份与容灾 3. 主要研究领域

2014-05-10

Glibc内存管理-Ptmalloc2源代码分析

本文通过Glibc的内存暴增问题,主要介绍了系统的内存管理问题,具体如下: 目录 1. 问题 2. 基础知识 2.1 X86平台Linux进程内存布局 2.1.1 32位模式下进程内存经典布局 2.1.2 32位模式下进程默认内存布局 2.1.3 64位模式下进程内存布局 2.2 操作系统内存分配的相关函数 2.2.1 Heap操作相关函数 2.2.2 Mmap映射区域操作相关函数 3. 概述 3.1 内存管理一般性描述 3.1.1 内存管理的方法 3.1.2 内存管理器的设计目标 3.1.3 常见C内存管理程序 3.2 Ptmalloc内存管理概述 3.2.1 简介 3.2.2 内存管理的设计假设 3.2.3 内存管理数据结构概述 3.2.4 内存分配概述 3.2.5 内存回收概述 3.2.6 配置选项概述 3.2.7 使用注意事项 4. 问题分析及解决 5. 源代码分析 5.1 边界标记法 5.2 分箱式内存管理 5.2.1 Small bins 5.2.2 Large bins 5.2.3 Unsorted bin 5.2.4 Fast bins 5.3 核心结构体分析 5.3.1 malloc_state 5.3.2 Malloc_par 5.3.3 分配区的初始化 5.4 配置选项 5.5 Ptmalloc的初始化 5.5.1 Ptmalloc未初始化时分配/释放内存 5.5.2 ptmalloc_init()函数 5.5.3 ptmalloc_lock_all(),ptmalloc_unlock_all(),ptmalloc_unlock_all2() 5.6 多分配区支持 5.6.1 Heap_info 5.6.2 获取分配区 5.6.3 Arena_get2() 5.6.4 _int_new_arena() 5.6.5 New_heap() 5.6.6 get_free_list()和reused_arena() 5.6.7 grow_heap(),shrink_heap(),delete_heap(),heap_trim() 5.7 内存分配malloc 5.7.1 public_mALLOc() 5.7.2 _int_malloc() 5.8 内存释放free 5.8.1 Public_fREe() 5.8.2 _int_free() 5.8.3 sYSTRIm()和munmap_chunk()

2012-10-09

列存储数据库关键技术综述

这是一篇学术论文,以下是简介: 随着互联网技术的发展、硬件的不断更新、企业及政府信息化的不断深入, 应用的复杂性要求越来越高, 推动着数据存储技术向着海量数据、分析数据、智能数据的方向发展, 以便为数据仓库、在线分析提供高效实时的技术支持。基于行存储的数据库技术面临新的问题, 已经出现了技术瓶颈。近些年来, 一种新的数据存储理念, 即基于列存储的关系型数据库( 简称列数据库, 下同)应运而生。列数据库能够快速发展, 主要原因是其复杂查询效率高, 读磁盘少, 存储空间少, 以及由此带来的技术、管理和应用优势。对列数据库技术的基本现状、关键支撑技术以及应用优势进行了介绍和分析。

2012-08-23

UNIX环境高级编程.rar

本书全面介绍了UNIX系统的程序设计界面—系统调用界面和标准C库提供的许多函数。 本书的前15章着重于理论知识的阐述,主要内容包括UNIX文件和目录、进程环境、进程控制、进程间通信以及各种I/O。在此基础上,分别按章介绍了多个应用实例,包括如何创建数据库函数库,PostScript 打印机驱动程序,调制解调器拨号器及在伪终端上运行其他程序的程序等。 本书内容丰富权威,概念清晰精辟,一直以来被誉为UNIX编程的“圣经”,对于所有UNIX程序员—无论是初学者还是专家级人士—都是一本无价的参考书籍。

2012-06-25

机器学习与R语言

Machine learning with R 该书是英文版的。

2014-05-10

Pinot简单介绍

Pinot 是一个实时分布式的 OLAP 数据存储和分析系统。LinkedIn 使用它实现低延迟可伸缩的实时分析。Pinot 从离线数据源(包括 Hadoop 和各类文件)和在线数据源(如 Kafka)中攫取数据进行分析。Pinot 被设计是可以进行水平扩展的。 该篇文章是对Pinot的简单介绍,http://blog.csdn.net/cjfeii/article/details/46711307。

2015-07-01

Pinot架构介绍

Pinot 是一个实时分布式的 OLAP 数据存储和分析系统。LinkedIn 使用它实现低延迟可伸缩的实时分析。Pinot 从离线数据源(包括 Hadoop 和各类文件)和在线数据源(如 Kafka)中攫取数据进行分析。Pinot 被设计是可以进行水平扩展的。 该文档主要是一个内部分享的ppt。

2015-07-03

lua编程指南

本书详细讲解了lua编程的方方面面,是一本不错的lua学习教程,也可以作为lua的参考书。

2014-05-10

Nginx模块参考手册中文版

主要介绍的是nginx模块开发的技术,是pdf文件。挺好的。

2014-04-24

Thinking in C++ (中文版,英文版)压缩包.zip

Thinking in C++ 中文版和英文版合集

2012-10-19

模式设计简述及源码实现

这是一本23种设计模式的简单表述书,并用C++源码实现,全文通俗易懂,可以在读GOF的大作《模式设计》之前看这本书,从而对模式设计有一个浅显的认识,然后再研读GOF的《模式设计》就会轻松很多。

2012-10-09

列存数据库研究

本文主要讲了列存数据库的现状、列存数据库的中用到的技术、列存数据库使用的环境,又介绍了一个列存数据库的产品:Sysbase IQ,最后展望了列存数据库的未来。是一篇很好的介绍列存数据库技术的一篇文章。

2012-08-23

cjfeii的留言板

发表于 2020-01-02 最后回复 2020-01-02

opencore-amr能实现mp3和amr格式互转吗?

发表于 2014-04-23 最后回复 2014-04-23

求一个开源的音频转码库

发表于 2014-04-22 最后回复 2014-04-23

hdfsRead读取数据大小为什么有限制?

发表于 2014-01-18 最后回复 2014-02-13

多进程编程中“pthread_rwlock_destroy”用法

发表于 2012-11-27 最后回复 2014-01-18

有没有碰到这种情形:基类的析构函数是纯虚的?

发表于 2012-11-13 最后回复 2012-11-27

ld: Can't find library for -lCbsSysClass

发表于 2011-08-02 最后回复 2012-11-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除