Buckets

常见的磁盘I/O和网络I/O优化技巧

房东的猫 提交于 2021-01-09 09:01:09
磁盘I/O 优化 性能检测 应用程序通过访问磁盘来读取数据,而磁盘I/O 通常都是很耗时间的,所以一般我们来判断I/O是否有瓶颈的时候,就需要一些参数指标来参考。 WAIT 指标 : 压测应用程序,查看系统I/O wait 指标是否正常,如果测试机器有4个CPU ,那么理想的I/O wait 参数不应该超过25% ,如果超过了25% ,那么就很可能成为程序的性能瓶颈,在Linux 下,可以通过iostat 命令查看。 IOPS(每秒读取次数) : 查看应用程序最低要求的IOPS 是多少,磁盘的IOPS 能不能达到要求。 每个磁盘的IOPS通常都在一定的范围内,当然这个和存储在磁盘上的数据块大小和访问方式相关。但主要是由磁盘的转速决定的。转速越高,则磁盘IOPS 越高。 提升I/O性能 通常提升I/O性能的方法有: 增加缓存,减少磁盘访问次数。 优化磁盘管理系统,设计最优磁盘方式策略,和磁盘的寻址策略,这是从底层操作系统层面的考虑。 设计合理的磁盘存储数据块,以及访问的策略。这是从应用层方面考虑的,比如给存放的数据加索引,通过寻址索引来加快和减少磁盘的访问量,以及异步和非阻塞的方式来加快磁盘访问速度。 当然我们现在通常采用一种叫做 RAID(磁盘阵列)的技术。 就是将不同的磁盘组合起来以提高I/O性能,现在有多种RAID 技术,每种RAID 技术对I/O性能的提升也不同。

TCP/IP及内核参数调优

◇◆丶佛笑我妖孽 提交于 2020-12-30 21:01:04
Linux下TCP/IP及内核参数优化有多种方式,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等。 如下配置是写在sysctl.conf中,可使用sysctl -p生效, 相关参数仅供参考,具体数值还需要根据机器性能,应用场景等实际情况来做更细微调整。 net.core.netdev_max_backlog = 400000 #该参数决定了,网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。 net.core.optmem_max = 10000000 #该参数指定了每个套接字所允许的最大缓冲区的大小 net.core.rmem_default = 10000000 #指定了接收套接字缓冲区大小的缺省值(以字节为单位)。 net.core.rmem_max = 10000000 #指定了接收套接字缓冲区大小的最大值(以字节为单位)。 net.core.somaxconn = 100000 #Linux kernel参数,表示socket监听的backlog(监听队列)上限 net.core.wmem_default = 11059200 #定义默认的发送窗口大小;对于更大的 BDP 来说,这个大小也应该更大。 net.core.wmem_max = 11059200

八大经典排序算法详解

风格不统一 提交于 2020-12-28 16:23:27
我记得上大学的时候,老师一直跟我们强调:“ 算法才是编程的灵魂 ”,找工作面试的时候,算法和数据结构也是绝对不可避免的,面试官可能一言不合就让你手写一个排序算法。 我把最经典的八大排序算法原理和代码也都整理出来了,内容如下,希望对大家能有所帮助。 插入排序 • 基本思想:每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 • 算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。 • 代码: public static void insertionSort ( int [] array ){ int tmp ; for ( int i = 1 ; i < array . length ; i ++){ tmp = array [ i ]; //将当前位置的数给tmp int j = i ; for (; j > 0 && array [ j - 1 ]> tmp ; j --){ /* 往右移,腾出左边的位置, array [ j - 1 ]> tmp :大于号是升序排列,小于号是降序排列 */ array [ j ] = array [ j - 1 ]; } //将当前位置的数插入到合适的位置 array [ j ] = tmp ; } } 冒泡排序 • 基本思想:持续比较相邻的元素。如果第一个比第二个大

亚马逊Amazon S3 对象存储WEB服务接口

和自甴很熟 提交于 2020-12-25 11:52:14
1.需要的依赖jar包 1 < dependency > 2    < groupId > com.amazonaws </ groupId > 3    < artifactId > aws-java-sdk-s3 </ artifactId > 4    < version > 1.11.233 </ version > 5 </ dependency > 2.访问参数实体 1 public class AmazonS3Bean { 2 3 private static String access_key_id = "access_key_id"; // 访问密钥ID 4 private static String secret_key = "secret_key"; // 访问密钥 5 private static String end_point = "end_point"; // 访问IP及端口号 6 private static String bucketname = "bucketname"; // 桶名 7 8 private String storageobjectvopath = "" ; 9 10 public static String getAccess_key_id() { 11 return access_key_id; 12 } 13 14

TCP参数调优详解

旧街凉风 提交于 2020-12-23 03:18:29
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念: 未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到 SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目, 服务器进入ESTABLISHED状态。 Backlog参数:表示未连接队列的最大容纳数目。 SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超 过系统规定的最大重传次数

C++11/14笔记

我只是一个虾纸丫 提交于 2020-12-19 11:26:54
这篇文章记录了学习侯捷老师C++11/14课程的笔记。C++11是C++2.0,引入了许多新的特性,将从语言层面和标准库层面来介绍这些新的特性。 由于直接引用的github仓库的图片,可能会有图片显示问题,可以在 https://github.com/FangYang970206/Cpp-Notes/releases 下载完整pdf版本的笔记,转载请注明地址,谢谢~ [TOC] 语言层面 怎样确定C++环境是否支持C++11呢? 使用如下语句: cout << __cplusplus << endl; 如果出现的头六位数是大于等于201103的,则支持C++11。 模板表达式中的空格 在C++11之前,模板后面的尖括号需要空格,C++11之后就不需要了。 nullptr和std::nullptr_t 使用nullptr代替NULL和0来代表指针没有指向值。这可以避免把空指针当int而引发错误。上图中给出了函数调用的实例,使用nullptr不会出现这种问题,这是因为nullptr是std::nullptr_t类型,c++11以后,std::nullptr_t也是基础类型了,可以自己定义变量。 自动推导类型----auto C++11之后,可以使用auto自动推导变量和对象的类型,而不需要自己手写出来,对于有非常复杂而长的类型来说,这是很方便的

Hadoop小文件利器Ozone

那年仲夏 提交于 2020-12-12 22:59:34
大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! Ozone诞生的背景 众所周知,HDFS是大数据存储系统,并在业界得到了广泛的使用。但是无论大集群还是小集群其扩展性都受NN的限制, 虽然HDFS可以通过Federation进行扩展,但是依然深受小文件和4亿个文件的困扰 。 于是分布式key-value存储系统Ozone诞生了,Ozone能够轻松管理小文件和大文件。(HDFS提供了类似POSIX的语义,Ozone的外观和行为更像一个Object存储系统。) Ozone Ozone是专门为Hadoop设计的可扩展的分布式对象存储系统。Hadoop生态中的其它组件如Spark、Hive和Yarn不需要任何修改就可以直接运行在Ozone之上。 Ozone的使用方式也较为丰富,可以通过命令行直接使用也有java客户端接口,而且接口支持RPC和REST。 Ozone由 volumes、buckets和Keys 组成,其中 Volumes只有管理员能够创建和删除,类似账号的概念,管理员一般都是给某个团队或者组织创建一个Volume。 Buckets有点像目录, 不过这个只能有一层,因为Buckets中不能包含其它Buckets 。Buckets是在Volume下,一个Volume可以包含n个Buckets, 但是Buckets下面只能是Keys

hadoop ozone入门

大兔子大兔子 提交于 2020-12-12 07:18:56
简介 众所周知,HDFS是大数据存储系统,并在业界得到了广泛的使用。但是无论大集群还是小集群其扩展性都受NameNode的限制,虽然HDFS可以通过Federation进行扩展,但是依然深受小文件和4亿个文件的困扰。 于是分布式key-value存储系统Ozone诞生了,Ozone能够轻松管理小文件和大文件。 其他能处理小文件的存储方案有Hbase, ceph等, 本人目前所了解的是ceph性能更好, ozone由于未在上产环境中实践过, 性能对比尚不可知。 Ozone是专门为Hadoop设计的可扩展的分布式对象存储系统。 Hadoop生态中的其它组件如Spark、Hive和Yarn不需要任何修改就可以直接运行在Ozone之上。 Ozone的使用方式也较为丰富,可以通过命令行直接使用也有java客户端接口,而且接口支持RPC和REST。 组成: volumes Volumes只有管理员能够创建和删除,类似账号的概念,管理员一般都是给某个团队或者组织创建一个Volume。 Buckets是在Volume下,一个Volume可以包含n个Buckets,但是Buckets下面只能是Keys。 buckets 类似目录, 但只能有一层, 因为Buckets中不能包含其它Buckets。 Keys Keys就是具体的对象,在Buckets中是唯一的,其名字可以是任意字符串

Wide and deep 模型【一】

江枫思渺然 提交于 2020-12-04 08:00:18
一、论文概述 Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1]。 wide and deep 模型的核心思想是结合线性模型的记忆能力(memorization)和 DNN 模型的泛化能力(generalization),在训练过程中同时优化 2 个模型的参数,从而达到整体模型的预测能力最优。 结合我们的产品应用场景同 Google Play 的推荐场景存在较多的类似之处,在经过调研和评估后,我们也将 wide and deep 模型应用到产品的推荐排序模型,并搭建了一套线下训练和线上预估的系统。鉴于网上对 wide and deep 模型的相关描述和讲解并不是特别多,我们将这段时间对 TensorFlow1.1 中该模型的调研和相关应用经验分享出来,希望对相关使用人士带来帮助。 wide and deep 模型的框架在原论文的图中进行了很好的概述。 wide 端 对应的是线性模型,输入特征可以是 连续特征,也可以是稀疏的离散特征 , 离散特征之间进行交叉后可以构成更高维的离散特征 。线性模型训练中通过 L1 正则化,能够很快收敛到有效的特征组合中。 deep 端 对应的是 DNN 模型,每个特征对应一个低维的实数向量,我们称之为特征的 embedding

Spring Cloud 源码学习之 Hystrix 熔断器

南笙酒味 提交于 2020-11-23 08:24:29
文中源码基于 Spring Cloud Finchley.SR1 、Spring Boot 2.0.6.RELEASE . 本文学习了Hystrix熔断器的原理、配置和源码,包含滑动窗口、状态变化等。 简介 circuit-breaker: circuit表示电路,大家译为熔断器非常精准。 回想起小时候,家里保险丝突然被烧断,需 手工更换一根新的保险丝 ;后来,保险丝被取代,电流过大时会跳闸, 闸拉上去后立马恢复供电 ;等到上大学时,只要打开功率高一点的电吹风,砰的一声就断电,但过10分钟就 自动来电 。在电流过大时,通过熔断机制以保护电路和家电。 Hystrix 属于上面的第三种, 一种自动恢复的智能熔断器 ,区别在于它保护的是系统,且判断 “电流过大” 的方式是: 不断收集请求指标信息(sucess、failure、timeout、rejection),当达到设定熔断条件时(默认是请求失败率达到50%)进行熔断。 在 Spring Cloud 源码学习之 Hystrix Metrics 收集 一文中,学习了 Metrics 收集,这是上文的图。 Hystrix Command 执行过程中,各种情况都以事件形式发出,再封装成特定的数据结构,最后汇入到事件流中(HystrixEventStream)。事件流提供了 observe() 方法,摇身一变,事件流把自己变成了一个数据源