Buckets

Nginx的10万并发内核参数优化

倾然丶 夕夏残阳落幕 提交于 2020-07-27 15:12:22
关于内核参数的优化: net.ipv4.tcp_max_tw_buckets = 6000 timewait的数量,默认是180000。 net.ipv4.ip_local_port_range = 1024 65000 允许系统打开的端口范围。 net.ipv4.tcp_tw_recycle = 1 启用timewait快速回收。 net.ipv4.tcp_tw_reuse = 1 开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接。 net.ipv4.tcp_syncookies = 1 开启SYN Cookies,当出现SYN 等待队列溢出时,启用cookies来处理。 net.core.somaxconn = 262144 web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到 128,而nginx定义的NGX_LISTEN_BACKLOG 默认为511,所以有必要调整这个值。 net.core.netdev_max_backlog = 262144 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包 的最大数目。 net.ipv4.tcp_max_orphans = 262144 系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上。如果超过这个数

深入解读Dictionary

徘徊边缘 提交于 2020-07-27 03:55:31
Dictionary<TKey,TValue> 是日常.net开发中最常用的数据类型之一,基本上遇到键值对类型的数据时第一反应就是使用这种散列表。散列表特别适合快速查找操作,查找的效率是常数阶O(1)。那么为什么这种数据类型的查找效率能够这么高效?它背后的数据类型是如何支撑这种查找效率的?它在使用过程中有没有什么局限性?一起来探究下这个数据类型的奥秘吧。 本文内容针对的是 .Net Framework 4.5.1 的代码实现,在其他.Net版本中或多或少都会有些差异,但是基本的原理还是相同的。 本文的内容主要分为三个部分,第一部分是从代码的角度来分析并以图文并茂的方式通俗的解释Dictionary如何解决的散列冲突并实现高效的数据插入和查找。第二部分名为“眼见为实”,由于第一部分是从代码层面分析Dictionary的实现,侧重于理论分析,因此第二部分使用windbg直接分析内存结构,跟第一部分的理论分析相互印证,加深对于这种数据类型的深入理解。最后是从数据结构的时间复杂度的角度进行分析并提出了几条实践建议。 本文内容: 第一部分 代码分析 散列冲突 Dictionary图文解析 Dictionary的初始化 添加第四个元素 第二部分 眼见为实 添加第一个元素后的内存结构 添加第四个元素后的内存结构 第三部分 时间复杂度分析 实践建议 散列冲突 提到散列表,就不能不提散列冲突

linux下TCP/IP及内核参数优化调优(TIME_WAIT)

倖福魔咒の 提交于 2020-07-26 19:43:22
以下未经验证,需根据实际场景测试验证!!! linux系统下内核参数优化,参数配置得当可以大大提高系统的性能,也可以根据特定场景进行专门的优化,如TIME_WAIT过高,DDOS攻击等等。 根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为4分钟,即240秒,TIME_WAIT状态下的socket不能被回收使用. 具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket, 甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务。 状态描述: CLOSED:无连接是活动的或正在进行 LISTEN:服务器在等待进入呼叫 SYN_RECV:一个连接请求已经到达,等待确认 SYN_SENT:应用已经开始,打开一个连接 ESTABLISHED:正常数据传输状态 FIN_WAIT1:应用说它已经完成 FIN_WAIT2:另一边已同意释放 ITMED_WAIT:等待所有分组死掉 CLOSING:两边同时尝试关闭 TIME_WAIT:另一边已初始化一个释放 LAST_ACK

深入解读Dictionary

泪湿孤枕 提交于 2020-07-25 00:57:43
Dictionary<TKey,TValue> 是日常.net开发中最常用的数据类型之一,基本上遇到键值对类型的数据时第一反应就是使用这种散列表。散列表特别适合快速查找操作,查找的效率是常数阶O(1)。那么为什么这种数据类型的查找效率能够这么高效?它背后的数据类型是如何支撑这种查找效率的?它在使用过程中有没有什么局限性?一起来探究下这个数据类型的奥秘吧。 本文内容针对的是 .Net Framework 4.5.1 的代码实现,在其他.Net版本中或多或少都会有些差异,但是基本的原理还是相同的。 本文的内容主要分为三个部分,第一部分是从代码的角度来分析并以图文并茂的方式通俗的解释Dictionary如何解决的散列冲突并实现高效的数据插入和查找。第二部分名为“眼见为实”,由于第一部分是从代码层面分析Dictionary的实现,侧重于理论分析,因此第二部分使用windbg直接分析内存结构,跟第一部分的理论分析相互印证,加深对于这种数据类型的深入理解。最后是从数据结构的时间复杂度的角度进行分析并提出了几条实践建议。 本文内容: 第一部分 代码分析 散列冲突 Dictionary图文解析 Dictionary的初始化 添加第四个元素 第二部分 眼见为实 添加第一个元素后的内存结构 添加第四个元素后的内存结构 第三部分 时间复杂度分析 实践建议 散列冲突 提到散列表,就不能不提散列冲突

search(12)- elastic4s-聚合=桶+度量

折月煮酒 提交于 2020-07-24 09:29:58
这篇我们介绍一下ES的聚合功能(aggregation)。聚合是把索引数据可视化处理成可读有用数据的主要工具。聚合由bucket桶和metrics度量两部分组成。 所谓bucket就是SQL的GROUPBY,如下: GET /cartxns/ _search { " size " : 2 , " aggs " : { " color " : { " terms " : { " field " : " color.keyword " } } } } ... " aggregations " : { " color " : { " doc_count_error_upper_bound " : 0 , " sum_other_doc_count " : 0 , " buckets " : [ { " key " : " red " , " doc_count " : 4 }, { " key " : " blue " , " doc_count " : 2 }, { " key " : " green " , " doc_count " : 2 } ] } } 上面这个例子中是以color.keyword为bucket的。elastic4是如下表现的: val aggTerms = search( " cartxns " ).aggregations( termsAgg( "

mysql 8 系统保留关键字

ぃ、小莉子 提交于 2020-05-09 14:09:59
mysql 8 中的系统保留关键字 在mysql中建表时,一定要注意避免使用系统的保留关键字,不然可能数据表创建成功了,但是在使用环节(增删改查)等,造成极大的不变,重则甚至返工修改字段。 所以,在建表前一定要排查一下建表字段是否与mysql保留关键字是否冲突,尤其是一些常用的因为单词。 关键字收集 A ACTIVE ADMIN ARRAY ATTRIBUTE B BUCKETS C CLONE COMPONENT CUME_DIST (R) D DEFINITION DENSE_RANK (R) DESCRIPTION E EMPTY (R) ENFORCED ENGINE_ATTRIBUTE EXCEPT (R) EXCLUDE F FAILED_LOGIN_ATTEMPTS FIRST_VALUE (R) FOLLOWING G GEOMCOLLECTION GET_MASTER_PUBLIC_KEY GROUPING (R) GROUPS (R) H HISTOGRAM HISTORY I INACTIVE INVISIBLE J JSON_TABLE (R) JSON_VALUE L LAG (R) LAST_VALUE (R) LATERAL (R) LEAD (R) LOCKED M MANAGED MASTER_COMPRESSION_ALGORITHMS

mysql 消耗CPU 异常高

我的未来我决定 提交于 2020-05-08 13:58:16
1.这里看到的是 主机cpu 90% 都给消耗掉了,主要是mysql 进程消耗资源 top - 14:46:26 up 266 days, 20:41, 4 users, load average: 17.14, 15.68, 10.69 Tasks: 264 total, 1 running, 263 sleeping, 0 stopped, 0 zombie Cpu(s): 69.5%us, 21.2%sy, 0.0%ni, 9.4%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 16333448k total, 9920660k used, 6412788k free, 488896k buffers Swap: 2097148k total, 24448k used, 2072700k free, 3965104k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9386 mysql 20 0 14.6g 4.5g 9164 S 723.8 28.9 416:42.07 /db/mysql/app/mysql/bin/mysqld --defaults-file=/db/mysql/app/mysql/my.cnf --basedi 11846 root 20 0

Hive 实现update和delete(转载)

左心房为你撑大大i 提交于 2020-05-08 02:26:25
原文链接: https://blog.csdn.net/xueyao0201/article/details/79387647 因为业务要求,需要对Hive表进行delete,在官网查询后,发现update和delete是一类问题。在此总结下如何实现Hive表的delete和update。 首先,先看下官网关于 update 和 delete 的相关说明,使用注意事项也请参考官网说明,这里只介绍如何实现相关功能。 综合上述信息,Hive自0.14版本开始支持update和delete,要执行update和delete的表必须支持ACID,而关于ACID的详细介绍,需要查看 Hive Transactions . 经过对 Hive Transactions 相关内容的分析,我提取出了以下必要信息: 综合上述信息,可以得出以下结论: 如果一个表要实现update和delete功能,该表就必须支持ACID,而支持ACID,就必须满足以下条件: 1、表的存储格式必须是ORC(STORED AS ORC); 2、表必须进行分桶(CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS); 3、Table property中参数transactional必须设定为True(tblproperties(

ES报错:"illegal_argument_exception"

假如想象 提交于 2020-05-06 10:51:06
ES报错具体错误如下: { "error": { "root_cause": [ { "type": "illegal_argument_exception", "reason": "Fielddata is disabled on text fields by default. Set fielddata=true on [createHour] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead." } ], "type": "search_phase_execution_exception", "reason": "all shards failed", "phase": "query", "grouped": true, "failed_shards": [ { "shard": 0, "index": "gmall1205_order", "node": "LCQa858ERH6qw_7asM2R3Q", "reason": { "type": "illegal_argument_exception

看懂Oracle执行计划、表连接方式

随声附和 提交于 2020-05-05 21:46:09
看懂Oracle执行计划 最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing… 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问路径的描述 二:怎样查看Oracle执行计划? 因为我一直用的PLSQL远程连接的公司数据库,所以这里以PLSQL为例: ①:配置执行计划需要显示的项: 工具 —> 首选项 —> 窗口类型 —> 计划窗口 —> 根据需要配置要显示在执行计划中的列 执行计划的常用列字段解释: 基数(Rows):Oracle估计的当前操作的返回结果集行数 字节(Bytes):执行该步骤后返回的字节数 耗费(COST)、CPU耗费:Oracle估计的该步骤的执行成本,用于说明SQL执行的代价,理论上越小越好(该值可能与实际有出入) 时间(Time):Oracle估计的当前操作所需的时间 ②:打开执行计划: 在SQL窗口执行完一条select语句后按 F5 即可查看刚刚执行的这条查询语句的执行计划 注:在PLSQL中使用SQL命令查看执行计划的话,某些SQL*PLUS命令PLSQL无法支持,比如SET AUTOTRACE ON 三:看懂Oracle执行计划 ①:执行顺序: 根据Operation缩进来判断,缩进最多的最先执行;(缩进相同时,最上面的最先执行) 例:上图中 INDEX