精华内容
下载资源
问答
  • 针对西部高校专任教师配置结构的现状及特有规律,从专任教师的个人能力、高校人员配置和师生配置等方面建立统计评价指标体系,运用统计模型(灰靶)对中国西部12个省、直辖市、自治区的高校专任教师配置结构进行评价。...
  • 通过架空乘人装置结构特点的分析,从安全、技术等方面讲述架空乘人装置各部件的配置要求;以帮助设备使用企业合理选配架空乘人装置。
  • 道格拉斯生产函数构建煤矿安全投入优化模型,并利用JM煤矿近年来的安全投入资金,运用matlab进行多次迭代运算,得到该煤矿在安全生产、安全工程、采矿工艺升级、安全管理改造和安全培训方面合理的安全投入配置,...
  • 【前端开发】代码结构及性能优化大总结

    千次阅读 多人点赞 2021-06-05 13:40:19
    1、前端结构组织与文件命名规范 前端结构组织具有如下原则: 同一项目中代码的组织结构要清晰 同类型文件归类到相同的文件夹中 文件命名规则须统一并且命名要有意义 HTML 命名规范 HTML 代码所有的标签名和属性...

    在这里插入图片描述

    1、前端结构组织与文件命名规范

    前端结构组织具有如下原则:

    • 同一项目中代码的组织结构要清晰
    • 同类型文件归类到相同的文件夹中
    • 文件命名规则须统一并且命名要有意义

    HTML 命名规范

    • HTML 代码所有的标签名和属性应该都为小写
    • 属性值应该用引号括起来
    • 元素的 id 与 class 按照特定规范命名
    • 代码缩进 4 个空格
    • 给 HTML 代码块添加必要注释

    CSS 命名规范

    • 尽量使用 class 选择器进行样式设定
    • 类命名时取父元素的 class 名作为前缀,使用-连接
    • 类名与样式之间以空格进行分割
    • 添加 CSS 代码注释

    JavaScript 命名规范

    • 变量名区分大小写,第一个字符不允许是数字,不允许包含空格和其他标点符号
    • 尽量使用有实际意义的命名
    • 禁止使用 JavaScript 关键词、保留字全名
    • 添加 JavaScript 代码注释

    2、 代码及性能优化

    1. HTML 代码优化

    优化 HTML 代码的目的一方面是使网站对搜索引擎更友好,一个漂亮的前端网站是用户友好的,并且在各方面都进行了优化的网站是搜索引擎友好的,是理想的网站。另一方面也是对代码的维护提供便利。一个规范的网页的 HTML 代码应该尽可能满足如下的条件:

    1. 正确闭合 HTML 标签,如 <div>盒子</div>
    2. HTML 代码层级间合理缩进,统一用两个或者四个空格缩进。
    3. 属性值需要使用双引号,如<div id="mydiv">盒子</div>
    4. 结构与样式进行有效的分离,即 HTML 和 CSS 文件的分离。
    5. 结构与行为进行有效的分离,即 HTML 和 JS 文件的分离。
    6. 使用语义化标签,如头部标签<header>
    7. 删除多余容器元素,代码层次少。
    8. 避免使用 table 进行页面的布局,换成用 DIV+CSS。此外,还可以通过在线网站(http://validator.w3.org/)来对 HTML 代码进行格式化验证。

    2. SEO优化

    • 合理的 title 、 description 、 keywords :搜索对着三项的权重逐个减小, title 值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面 title 要有所不同; description 把页面内容高度概括,长度合适,不可过分堆砌关键词,不同页面 description 有所不同;keywords 列举出重要关键词即可
    • 语义化的 HTML 代码,符合W3C规范:语义化代码让搜索引擎容易理解网页
    • 重要内容 HTML 代码放在最前:搜索引擎抓取 HTML 顺序是从上到下,有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取
    • 重要内容不要用 js 输出:爬虫不会执行js获取内容
    • 少用 iframe :搜索引擎不会抓取 iframe 中的内容
    • 非装饰性图片必须加 alt
    • 提高网站速度:网站速度是搜索引擎排序的一个重要指标

    3. CSS优化

    • CSS 样式多余样式去除、结构优化
    • 将样式表放在页面顶部
    • 使用 less scss 表达式
    • 使用 link 不适用 @import 引入样式
    • 压缩 css
    • 禁止使用 gif 图片实现 loading 效果(降低 CPU 消耗,提升渲染性能)
    • 使用CSS3 代码代替 JS 动画(尽可能避免重绘重排以及回流)
    • 对于一些小图标,可以使用 base64 位编码,以减少网络请求。
    • 页面头部的

    4. server服务端优化

    • 减少 HTTP 请求,合并文件、雪碧图
    • 减少 DNS 查询,使用缓存
    • 减少 Dom 元素的数量
    • 使用 CDN
    • 配置 ETag ,http缓存的手段
    • 对组件使用 Gzip 压缩
    • 减少 cookie 的大小

    5. JavaScript方面优化

    • 代码与结构分离:即把 HTML 和 JavaScript 进行有效分离,这里有两种意义上的分离,一种是就在 HTML 中分离 JavaScript,另外一种是在JavaScript 中分离HTML。
    • 样式与结构的分离:即把 CSS 和 HTML 进行有效分离,这里指在 JavaScript 中将CSS 和 HTML 进行分离。
    • 数据与代码分离:也可以认为是前后端分离的表现。后台接口只负责返回json 格式的数据,不会返回带标签甚至是带样式或带 JavaScript 的组合数据。而且模拟数据可以用 json 文件或者相关插件如 mock。这样的好处就是将数据从代码中抽离出来,当数据变化时不能影响代码。
    • JavaScript DOM 优化:尽可能减少重排和重绘;用 cssText 改变样式;批量修改 DOM;提升文件加载速度。
    • 将脚本放到页面底部
    • 将 js 外部引入
    • 压缩 js
    • 使用 Eslint 语法检测
    • 减少 Dom 的操作
    • 熟练使用设计模式
    • 禁止使用 iframe (阻塞父文档 onload 事件)
    • 页面中空的 href 和 src 会阻塞页面其他资源的加载
    • 网页 gzip , CDN 托管, data 缓存 ,图片服务器

    6.Webpack优化

    • 代码压缩插件 UglifyJsPlugin
    • 服务器启用 gzip 压缩
    • 按需加载资源文件 require.ensure
    • 优化 devtool 中的 source-map
    • 剥离 css 文件,单独打包
    • 去除不必要插件,通常就是开发环境与生产环境用同一套配置文件导致
    • 开发环境不做无意义的工作如提取 css 计算文件hash等
    • 配置 devtool
    • 优化构建时的搜索路径 指明需要构建目录及不需要构建目录

    7. 加载优化:

    • 合并CSS、JavaScript
    • 合并小图片、使用精灵图
    • 缓存一切可缓存的资源
    • 使用外链式引用CSS、JavaScript
    • 压缩HTML、CSS、JavaScript
    • 启用GZip
    • 使用首屏加载、按需加载、滚屏加载
    • 通过Media Query加载
    • 增加Loading进度条
    • 减少Cookie
    • 避免重定向
    • 异步加载第三方资源

    8. 页面渲染优化

    • HTML 文档结构层次尽量少,最好不深于 6 层
    • 脚本尽量放后边,避免组织页面加载
    • 少量首屏样式可以放在便签内
    • 样式结构层次尽量简单
    • 脚本减少 DOM 操作,减少回流,尽量缓存访问 DOM 的样式信息
    • 尽量减少 JS 修改样式,可以通过修改 class 名的方式解决
    • 减少 DOM 查找,缓存 DOM 查找结果
    • 动画在屏幕外或页面滚动时,尽量停止

    9. 图片优化

    • 使用智图
    • 使用(CSS3、SVG、IconFont)代替图片
    • 使用Srcset
    • webP优于JPG
    • PNG8优于GIF
    • 图片不宽于640

    10. 脚本优化

    • 减少重绘和回流
    • 缓存Dom选择与计算
    • 尽量使用事件处理,避免批量绑定事件
    • 尽量使用ID选择器
    • 使用touchstart、touchend代替click

    3、前端资源优化

    • Sprite 拼合图: CSS Sprite,中文也叫 CSS 精灵、雪碧图,是一种将零散的背景图合并成一张大图,再利用 CSS 的 background-position 属性进行背景的定位从而达到减少图片请求数量达到加快加载速度的网页应用处理方式。
    • 压缩:代码压缩、打包工具(压缩 JavaScript、压缩 CSS)
    • 预加载:预加载简单来说就是将所有所需的资源提前请求加载到本地,这样后面在需要用到时就直接从缓存取资源。
    • 懒加载:首屏加载,技术上显示要用的技术就是图片懒加载,即到可视区域再加载。
    展开全文
  • 在这种情形中,频率资源相对充足,只要进行合理的频率优化,无线网络质量就有较大提升空间。 其二是小区之间重叠覆盖较多、载波配置较高,导致频率规划难度大、优化空间小。在这种情形下,必须进行无线网络结构的...
  • 运用大数据工具与智能化服务,探索资源优化配置的对策,让有限的资源发挥出最大的效能,从而为解决我国科技创新管理体制机制存在的长期性、结构性问题提供参考,为科技管理决策方式的转变提供支持。 摘自:大数据...

    大数据环境中资源优化配置策略研究
    谢从晋 杨柳 毕孝儒
    四川外国语大学重庆南方翻译学院
    摘 要:
    要提高科技的自主创新能力,资源优化配置是关键。分析现阶段我国资源配置存在的突出问题;运用大数据工具与智能化服务,探索资源优化配置的对策,让有限的资源发挥出最大的效能,从而为解决我国科技创新管理体制机制存在的长期性、结构性问题提供参考,为科技管理决策方式的转变提供支持。
    摘自:大数据环境中资源优化配置策略研究
    信息技术的突飞猛进和社会经济的长足发展,使得科技创新的管理模式正在变革,随之产生了资源配置方式的改变。研究大数据时代背景下资源 (包括人力资源、市场资源、技术资源、财力资源、物力资源以及信息资源) 的优化配置问题,目的是让有限的资源发挥出最大的效能。

    当前,我国正在实施创新驱动发展战略,科技创新已经成为提高全社会生产力和综合国力的战略支撑,并且已经处在国家发展全局的核心位置。资源的优化配置是科技创新的重要支撑和保障,进而关系到我国的经济安全、科技安全和信息安全。资源配置效率问题一直是科技体制改革的焦点,它直接影响着我国创新型国家和世界科技强国的建设目标能否顺利实现。

    1 现阶段我国资源配置存在的问题
    1.1 资源配置的有效性问题突出
    资源有效配置表现为将有限的资源利用到恰到好处的地步,充分发挥出各项资源的使用效能和创造潜能,其配置不仅符合国家发展战略导向和产业结构调整,而且满足科技创新的客观规律。优化的目的是在时与空的维度上最优地开发、分配资源,合理地布局科技这项最重要的生产力要素,建立科技进步的长效机制,以取得最佳的社会经济效益。

    当前,我国资源配置的有效性存在突出问题,具体表现有:人才资源的流动性不足和局部性匮乏、市场资源的分配不完全合理且干预过多、技术资源的重视程度和保护力度不够、财力资源的监管不够严格、物力资源的浪费问题较为突出、信息资源的安全性缺乏保障等。

    1.2 资源配置的均衡性有待提升
    资源的均衡性是指将资源有效地分配到科技创新活动中,减少资源的过度分配、欠分配或不平衡分配,形成资源使用的平稳分布。

    当前,我国资源配置存在诸多均衡性方面的矛盾,具体表现有:资源在国营经济和民营经济体系中的配置不均衡、资源在发达地区和欠发达地区的配置不均衡、资源在发展较快产业和发展缓慢产业中的配置不均衡、资源在城市和农村的配置不均衡等。

    1.3 资源管理体制机制尚不完善
    完善的资源管理体制机制是资源合理、有效配置的保障。当前我国资源管理体制机制存在不完善的问题,具体表现为:系统性的资源管理体系尚未建立,成本控制与风险预警体系尚不成熟、与国家经济阶段性发展特征相匹配的动态调配制度尚未确立,资源管理长效机制的建立处于探索阶段。

    2 运用大数据对资源配置进行优化的基本思路
    大数据技术的发展与应用,使得人们越来越认识到数据的价值,科技管理领域更是如此。资源大数据背后的潜在价值需要人们不断地发掘,以发现并解决在人力资源配置、市场资源配置、技术资源配置、财力资源配置、物力资源配置以及信息资源配置等方面存在的问题。数据驱动型科技创新管理决策能改变传统管理模式存在的诸多问题,从而使得科技管理决策更加科学有效。正如基于大数据分析的资源配置决策,可以改变传统配置思路和方法的静态性和局部性,使资源配置表现出前所未有的动态性和全局性。同时,针对不同地区、行业、领域的发展状况,可以依托大数据开展不同地区、行业和领域资源配置的相关性分析,挖掘出配置过程中出现的问题,从而形成特色鲜明、针对性很强的个性化措施。

    图1 基于大数据的资源优化配置模型框图
    在这里插入图片描述

    本文提出的一种运用大数据工具来优化资源配置的方案,其模型如图1所示。

    方案的基本思路为:采集数据—分析与处理数据—运用数据三个阶段。通过建立资源大数据信息采集与管理系统,采集资源的大数据信息,形成资源配置大数据库;对科技大数据进行处理与分析;构建资源配置的监测与评估模型,开展资源的动态评估;对资源的配置进行实时地优化并提供反馈信息。该方案的目的是推进资源管理信息化,积累科技管理基础资料,掌握资源配置总体状况,加强动态监测,提高科技管理效率。

    3 运用大数据工具探索资源优化配置的对策
    3.1 建立资源大数据信息采集与管理系统
    资源大数据的采集、存储、管理需要建立完整的体系,这是开展后续分析和研究的基础。

    资源大数据的采集是搜集资源相关的全部数据信息,包括来自管理与服务部门和资源使用主体的所有数据,以及资源本身的数据信息,采集与存储示意图如图2所示。图中列出了典型的管理与服务部门,以及具有代表性的资源使用主体。管理与服务部门的服务器和数据库中,与资源相关的数据库都要打通;同时,还要记录搜集到的资源大数据的相关维度,否则可能会因为历史数据不够而影响后期的资源配置效率分析。资源大数据的存储即用大量存储器将采集到的海量的资源大数据存储起来并建立相应的大数据库,并完成数据的管理和调用任务。采集数据时要着重处理好采集方式、采集时效性和可靠性等问题;存储数据时要着重解决好表示、可靠性和传输等关键性问题。

    图2 资源大数据采集与存储示意图
    在这里插入图片描述

    3.2 对科技大数据进行处理与分析
    刚采集到的资源大数据是以非结构化为主,结构化和半结构化为辅的复杂数据,有的数据还存在信息不完整、表述不一致、被噪声污染等问题,因此无法直接对这些数据进行数据分析与挖掘,必须先对这些数据进行辨析、清洗、抽取、集成、聚类等处理。具体为:将结构复杂、类型不一致的资源大数据转化为结构统一、类型一致且便于处理的数据;将夹杂在资源大数据中的噪声数据进行过滤;删除无用、无效或者错误的数据,保留有价值、有效的数据。

    资源大数据的分析包括统计分析、查询分析、流分析、关联分析等,目的是从数据中挖掘出与资源配置相关的信息。

    3.3 开展资源配置的监测与评估
    建立资源大数据标签体系,该体系包括人力资源、市场资源、技术资源、财力资源、物力资源以及信息资源六个类别,按照这六个类别将所有数据划分为六个不同属性的子数据项,并建立相应的数学计算模型;对资源的配置效率开展评估工作,并将评估结果反馈到最开始的大数据采集与存储环节,以便保证数据库的健壮性和适用性;最后将评估结果用于数据应用与服务,如数据的可视化呈现、资源配置风险预警、资源配置失衡分析等。

    3.4 对资源的配置进行优化与反馈
    在以上资源配置评估的基础上,利用大数据工具研究资源配置优化问题。通过大数据分析,研究解决科技人力资源流动性不足和人才资源局部性匮乏的深层次原因,从法律、教育、政策引导等方面提出改善措施;通过大数据分析,实时监测市场的运行过程以及市场在资源配置过程中产生的作用,对市场资源配置的不合理部分进行及时有效的调控和干预;通过大数据分析,制定全局性的技术资源保护机制,及时发现、制止技术资源的侵权行为;通过大数据工具与智能化服务,对财力资源进行规范化管理并进行严格监管;进一步将物力资源纳入物联网,建立物力资源大数据库,对浪费、非法侵占、挪用等行为进行有效管控;利用大数据工具,设计信息安全预警系统,制定必要的保护措施、确保信息资源的安全。

    通过以上大数据采集、大数据处理与分析、大数据建模、大数据监测与评估等环节,发现资源配置问题并制定相应的优化措施,再不断地将优化影响反馈到资源配置模型中,进而形成一个良性循环系统,最终使资源配置表现出投入适当、结构合理、比例协调、管理规范的局面。

    4 结语
    文中分析了当前我国资源配置存在的问题,提出了运用大数据工具进行资源优化配置的思路和对策,为大数据时代背景下变革现有科技创新管理模式提供参考,为新形势下提升我国科技的自主创新能力提供支撑。

    展开全文
  • 近来,国家不断强化了经济的宏观调控,能源市场价格逐步下跌,需求结构日趋优化。因此,煤炭企业应该认清市场动态,把握煤炭营销差异,整合市场资源,优化营销组合,不断打造核心竞争力,实现企业的长久兴旺。
  • Nginx优化配置和内核优化 实现突破十万并发_nginx https://m.aliyun.com/yunqi/ziliao/105606 nginx指令中的优化配置文件) 复制代码 代码如下: worker_processes 8;  nginx进程数,建议按照cpu数目来指定...

    Nginx优化配置和内核优化 实现突破十万并发_nginx

    https://m.aliyun.com/yunqi/ziliao/105606

    nginx指令中的优化(配置文件)

    复制代码 代码如下:

    worker_processes 8;

      nginx进程数,建议按照cpu数目来指定,一般为它的倍数。

    复制代码 代码如下:

    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

      为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu。

    复制代码 代码如下:

    worker_rlimit_nofile 102400;

      这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。

    复制代码 代码如下:

    use epoll;

      使用epoll的I/O模型,这个不用说了吧。

    复制代码 代码如下:

    worker_connections 102400;

      每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections。

    复制代码 代码如下:

    keepalive_timeout 60;

      keepalive超时时间。

    复制代码 代码如下:

    client_header_buffer_size 4k;

      客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得。

    复制代码 代码如下:

    open_file_cache max=102400 inactive=20s;

      这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。

    复制代码 代码如下:

    open_file_cache_valid 30s;

      这个是指多长时间检查一次缓存的有效信息。

    复制代码 代码如下:

    open_file_cache_min_uses 1;

      open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

    内核参数的优化

    复制代码 代码如下:

    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套接字不被关联到任何一个用户文件句柄上。如果超过这个数字,孤儿连接将即刻被复位并打印出警告信息。这个限制仅仅是为了防止简单的DoS攻击,不能过分依靠它或者人为地减小这个值,更应该增加这个值(如果增加了内存之后)。

    复制代码 代码如下:

    net.ipv4.tcp_max_syn_backlog = 262144

      记录的那些尚未收到客户端确认信息的连接请求的最大值。对于有128M内存的系统而言,缺省值是1024,小内存的系统则是128。

    复制代码 代码如下:

    net.ipv4.tcp_timestamps = 0

      时间戳可以避免序列号的卷绕。一个1Gbps的链路肯定会遇到以前用过的序列号。时间戳能够让内核接受这种"异常"的数据包。这里需要将其关掉。

    复制代码 代码如下:

    net.ipv4.tcp_synack_retries = 1

      为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。

    复制代码 代码如下:

    net.ipv4.tcp_syn_retries = 1

      在内核放弃建立连接之前发送SYN包的数量。

    复制代码 代码如下:

    net.ipv4.tcp_fin_timeout = 1

      如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。对端可以出错并永远不关闭连接,甚至意外当机。缺省值是60秒。2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN- WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。

    复制代码 代码如下:

    net.ipv4.tcp_keepalive_time = 30

      当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。

    一个完整的内核优化配置

    复制代码 代码如下:

    net.ipv4.ip_forward = 0
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 0
    kernel.core_uses_pid = 1
    net.ipv4.tcp_syncookies = 1
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296
    net.ipv4.tcp_max_tw_buckets = 6000
    net.ipv4.tcp_sack = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_rmem = 4096 87380 4194304
    net.ipv4.tcp_wmem = 4096 16384 4194304
    net.core.wmem_default = 8388608
    net.core.rmem_default = 8388608
    net.core.rmem_max = 16777216
    net.core.wmem_max = 16777216
    net.core.netdev_max_backlog = 262144
    net.core.somaxconn = 262144
    net.ipv4.tcp_max_orphans = 3276800
    net.ipv4.tcp_max_syn_backlog = 262144
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_synack_retries = 1
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_mem = 94500000 915000000 927000000
    net.ipv4.tcp_fin_timeout = 1
    net.ipv4.tcp_keepalive_time = 30
    net.ipv4.ip_local_port_range = 1024 65000

    一个简单的nginx优化配置文件

    复制代码 代码如下:

    user www www;
    worker_processes 8;
    worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000;
    error_log /www/log/nginx_error.log crit;
    pid /usr/local/nginx/nginx.pid;
    worker_rlimit_nofile 204800;

    events
    {
    use epoll;
    worker_connections 204800;
    }

    http
    {
    include mime.types;
    default_type application/octet-stream;

    charset utf-8;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 2k;
    large_client_header_buffers 4 4k;
    client_max_body_size 8m;

    sendfile on;
    tcp_nopush on;

    keepalive_timeout 60;

    fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2
    keys_zone=TEST:10m
    inactive=5m;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 16k;
    fastcgi_buffers 16 16k;
    fastcgi_busy_buffers_size 16k;
    fastcgi_temp_file_write_size 16k;
    fastcgi_cache TEST;
    fastcgi_cache_valid 200 302 1h;
    fastcgi_cache_valid 301 1d;
    fastcgi_cache_valid any 1m;
    fastcgi_cache_min_uses 1;
    fastcgi_cache_use_stale error timeout invalid_header http_500;

    open_file_cache max=204800 inactive=20s;
    open_file_cache_min_uses 1;
    open_file_cache_valid 30s;



    tcp_nodelay on;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;


    server
    {
    listen 8080;
    server_name ad.test.com;
    index index.php index.htm;
    root /www/html/;

    location /status
    {
    stub_status on;
    }

    location ~ .*\.(php|php5)?$
    {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    include fcgi.conf;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
    {
    expires 30d;
    }

    log_format access '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" $http_x_forwarded_for';
    access_log /www/log/access.log access;
    }
    }

    关于FastCGI的几个指令

    复制代码 代码如下:

    fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;

      这个指令为FastCGI缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。

    复制代码 代码如下:

    fastcgi_connect_timeout 300;

      指定连接到后端FastCGI的超时时间。

    复制代码 代码如下:

    fastcgi_send_timeout 300;

      向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。

    复制代码 代码如下:

    fastcgi_read_timeout 300;

      接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。

    复制代码 代码如下:

    fastcgi_buffer_size 16k;

      指定读取FastCGI应答第一部分需要用多大的缓冲区,这里可以设置为fastcgi_buffers指令指定的缓冲区大小,上面的指令指定它将使用1个16k的缓冲区去读取应答的第一部分,即应答头,其实这个应答头一般情况下都很小(不会超过1k),但是你如果在fastcgi_buffers指令中指定了缓冲区的大小,那么它也会分配一个fastcgi_buffers指定的缓冲区大小去缓存。

    复制代码 代码如下:

    fastcgi_buffers 16 16k;

      指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答,如上所示,如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存,如果大于256k,增大于256k的部分会缓存到fastcgi_temp指定的路径中,当然这对服务器负载来说是不明智的方案,因为内存中处理数据速度要快于硬盘,通常这个值的设置应该选择一个你的站点中的php脚本所产生的页面大小的中间值,比如你的站点大部分脚本所产生的页面大小为256k就可以把这个值设置为16 16k,或者4 64k 或者64 4k,但很显然,后两种并不是好的设置方法,因为如果产生的页面只有32k,如果用4 64k它会分配1个64k的缓冲区去缓存,而如果使用64 4k它会分配8个4k的缓冲区去缓存,而如果使用16 16k则它会分配2个16k去缓存页面,这样看起来似乎更加合理。

    复制代码 代码如下:

    fastcgi_busy_buffers_size 32k;

      这个指令我也不知道是做什么用,只知道默认值是fastcgi_buffers的两倍。

    复制代码 代码如下:

    fastcgi_temp_file_write_size 32k;

      在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。

    复制代码 代码如下:

    fastcgi_cache TEST

      开启FastCGI缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU负载,并且防止502错误。但是这个缓存会引起很多问题,因为它缓存的是动态页面。具体使用还需根据自己的需求。

    复制代码 代码如下:

    fastcgi_cache_valid 200 302 1h;
    fastcgi_cache_valid 301 1d;
    fastcgi_cache_valid any 1m;

      为指定的应答代码指定缓存时间,如上例中将200,302应答缓存一小时,301应答缓存1天,其他为1分钟。

    复制代码 代码如下:

    fastcgi_cache_min_uses 1;

      缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数,如上例,如果在5分钟内某文件1次也没有被使用,那么这个文件将被移除。

    复制代码 代码如下:

    fastcgi_cache_use_stale error timeout invalid_header http_500;

      不知道这个参数的作用,猜想应该是让nginx知道哪些类型的缓存是没用的。 以上为nginx中FastCGI相关参数,另外,FastCGI自身也有一些配置需要进行优化,如果你使用php-fpm来管理FastCGI,可以修改配置文件中的以下值:

    复制代码 代码如下:

    <value name="max_children">60</value>

      同时处理的并发请求数,即它将开启最多60个子线程来处理并发连接。

    复制代码 代码如下:

    <value name="rlimit_files">102400</value>

      最多打开文件数。

    复制代码 代码如下:

    <value name="max_requests">204800</value>

      每个进程在重置之前能够执行的最多请求数。

    几张测试结果

      静态页面为我在squid配置4W并发那篇文章中提到的测试文件,下图为同时在6台机器运行webbench -c 30000 -t 600 http://ad.test.com:8080/index.html命令后的测试结果:

      使用netstat过滤后的连接数:

      php页面在status中的结果(php页面为调用phpinfo):

      php页面在netstat过滤后的连接数:

      未使用FastCGI缓存之前的服务器负载:

      此时打开php页面已经有些困难,需要进行多次刷新才能打开。上图中cpu0负载偏低是因为测试时将网卡中断请求全部分配到cpu0上,并且在nginx中开启7个进程分别制定到cpu1-7。

      使用FastCGI缓存之后:

      此时可以很轻松的打开php页面。

      这个测试并没有连接到任何数据库,所以并没有什么参考价值,不过不知道上述测试是否已经到达极限,根据内存和cpu的使用情况来看似乎没有,但是已经没有多余的机子来让我运行webbench了。

    展开全文
  • 建立了覆盖率最大化的传感器优化配置准则,实验证明了其合理性;提出了自适应改变惯性权重的粒子群优化(PSO)算法求解传感器优化配置问题;仿真分析了平板结构的FBG传感器优化配置,并对比了自适应和线性改变惯性权重...
  • Redis集群配置参数及优化

    万次阅读 2018-01-12 15:39:28
    Redis的主要参数配置在redis.conf文件中。 1. conf 内存值 2.bind ip 默认情况下,如果没有指定“bind”配置指令,Redis将侦听服务器上可用的所有网络接口的连接。 默认情况:bind 127.0.0.1 实际配置:bind 本机ip ...

    欢迎关注“程序杂货铺”公众号,里面有精彩内容,欢迎大家收看^_^

    Redis的主要参数配置在redis.conf文件中。

    1.      conf 内存值

    2.     bind ip

    默认情况下,如果没有指定“bind”配置指令,Redis将侦听服务器上可用的所有网络接口的连接。

    默认情况:bind 127.0.0.1

    实际配置:bind 本机ip

    3.     protected-mode yes

    启用默认保护模式。只有当您确定您希望其他主机的客户端连接到Redis时,您才应该禁用它,即使没有配置身份验证,也没有使用“bind”指令显式列出特定的接口集。

    4.      tcp-keepalive300

    如果非零,请使用SO_KEEPALIVE向没有通信的客户发送TCP协议。

    这很有用,有两个原因:

    a)       检测死同伴

    b)       从中间的网络设备的角度进行连接

    在Linux上,指定的值(以秒为单位)是用于发送ack的周期。

    注意,要关闭连接,需要双倍的时间。这个选项的合理值是300秒,这是新的Redis默认值,从Redis 3.2.1开始。

    5.      timeout0

    在客户机空闲N秒后关闭连接(0到禁用)

    6.     port 6379

    在指定端口上接受连接,默认值是6379

    7.     daemonize yes

    redis后台运行

    8.     pidfile /var/run/redis_6379.pid

    如果指定了一个pid文件,Redis会在启动时指定,并在退出时删除它。

    当服务器运行非守护进程时,如果配置中没有指定pid文件,则不会创建pid文件。当服务器被守护时,即使没有指定,也会使用pid文件,默认为“/var/run/redis.pid”。

    创建一个pid文件是最好的工作:如果Redis不能创建它,那么服务器就会正常启动和运行。

    9.     loglevel notice

    指定服务器冗余级别

    包括:

    a)       debug: 大量信息,用于开发/测试

    b)       verbose: 许多很少有用的信息,但不像debug级别那样混乱

    c)       notice: 适度详细,可能在生产中需要

    d)       warning: 只有非常重要/关键的消息被记录

    10.  logfile""

    指定日志文件名。还可以使用空字符串强制Redis登录标准输出。请注意,如果您使用标准输出来记录日志,但是daemalize,日志将被发送到/dev/null。

    11.  databases 16

    设置数据库的数量。默认数据库是DB 0,您可以使用select 在每个连接上选择一个不同的数据库,其中dbid是一个0和'databases'-1之间的数字。

    12.  always-show-logoyes

    默认情况下,Redis只显示了ASCII艺术标志,当开始记录到标准输出时,如果标准输出是TTY。基本上,这意味着通常只有在交互式会话中才会显示徽标。但是,可以强制执行4.0的行为,并且在启动日志中始终显示一个ASCII艺术标识,通过设置下面的选项为yes。

    13.  dbfilename dump.rdb

    要转储数据库的文件名,存储文件。

    14.  dir ./

    工作目录

    将在这个目录中写入,使用“dbfilename”配置指令指定上面指定的文件名。

    只在此目录中创建附加文件。

    注意,您必须在这里指定一个目录,而不是文件名。

    15.  slaveof<masterip> <masterport>

    主从复制。使用slaveof来让一个Redis实例复制另一个Redis服务器。

    a)       Redis复制是异步的;

    b)       如果复制链接在相对较小的时间内丢失,Redis的奴隶可以与主服务器进行部分的重新同步。

    c)       复制是自动的,不需要用户干预。在网络分区后,奴隶会自动尝试重新连接主人并与他们重新同步。

    16.  masterauth<master-password>

    如果master是密码保护的(使用下面的“requirepass”配置指令),在启动复制同步进程之前,可以告诉奴隶进行身份验证,否则主人将拒绝奴隶请求。

    17.  slave-serve-stale-datayes

    当一个奴隶失去与主人的联系,或当复制仍在进行时,奴隶可以采取两种不同的方式:

    a)       如果slave-serve-stale-data被设置为“yes”(默认),则该slave仍然会回复客户端请求,可能是由于过时数据,或者如果这是第一次同步,数据集可能是空的。

    b)       如果slave-serve-stale-data被设置为“不”,那么slave将会以“与master同步”的错误来回复所有的命令,but toINFO and SLAVEOF。

    18.  slave-read-onlyyes

    注:只读奴隶不被设计成在互联网上接触不可信的客户。它只是一个防止滥用实例的保护层。

    在默认情况下,仍然只读取奴隶的导出,所有的管理命令,例如CONFIG、DEBUG等等。在一定程度上,您可以通过使用“rename-command”来对所有的管理/危险命令进行隐藏,从而提高读取的安全性。

    19.  repl-backlog-size1mb

    backlog是一个缓冲区

    20.  slave-priority100

    它被Redis Sentinel所使用,以便在主人不再正确工作的情况下,选择一个奴隶来提升为主人。

    一个低优先级的奴隶被认为是更好的晋升机会,例如,如果有三个优先级为10、100、25个哨兵的奴隶将选择优先级为10的,这是最低的。然而,一个特殊的优先级0标志着奴隶不能执行主人的角色,因此,优先级为0的奴隶将永远不会被RedisSentinel选中来提升。

    默认情况下,优先级是100。

    21.  maxclients10000

    设置同时连接客户端的最大数量,默认情况下这个限制设置为10000个客户,一旦达到限制,Redis将关闭所有新的连接,发送错误的最大客户数。

    22.  maxmemory<bytes>

    将内存使用限制设置为指定的字节数。

    如果您有附加的奴隶,建议您为maxmemory设置一个较低的限制,以便在系统上有一些空闲RAM用于输出缓冲区(但如果策略是“no驱逐”,则不需要这样做)。

    23.  maxmemory-policynoeviction

    MAXMEMORY策略:当达到MAXMEMORY时,Redis将选择要删除的内容。

    volatile-lru: 在键中使用近似的LRU结束设置。

    allkeys-lru: 使用近似的LRU清除任何键。

    volatile-lfu: 在密钥中使用近似的LFU结束设置。

    allkeys-lfu: 使用近似的LFU清除任何密钥。

    volatile-random: 将一个随机密钥删除,其中有一个过期设置。

    allkeys-random: 删除一个随机密钥,任何密钥。

    volatile-ttl: 删除最近过期时间的键(小TTL)

    noeviction: 不驱逐任何东西,只返回写操作上的错误。

    注:LRU的意思是最近使用最少,LFU的意思是最不常用,LRU、LFU和挥发性ttl均采用近似随机算法实现。在上面的任何一个策略中,Redis将返回一个写操作上的错误,当没有合适的键来驱逐时。

    默认是: maxmemory-policynoeviction

    24.  maxmemory-samples5

    LRU、LFU和最小TTL算法不是精确的算法,而是近似算法(为了节省内存),所以你可以对它进行调优,以达到速度或精度。对于默认的Redis将检查5个键并选择最近使用较少的键,您可以使用下面的配置指令来更改示例的大小。

    注:默认的5产生足够好的结果。十分接近真实的LRU,但成本更大。3更快,但不太准确。

    25.  appendonly yes

    只追加模式

    aof日志开启  有需要就开启,它会每次写操作都记录一条日志

    默认情况下,Redis会异步地转储磁盘上的数据集。这种模式在许多应用程序中都很好,但是对于Redis进程或断电可能会导致几分钟的写入丢失(取决于配置的保存点)。

    Append文件是一种替代持久性模式,它提供了更好的持久性。

    AOF和RDB持久性可以同时启用,没有问题。

    如果在启动Redis上启用了AOF,则会加载AOF,这是具有更好的耐久性保证的文件。

    appendfilename "appendonly.aof"

    26.  appendfsynceverysec

    fsync()调用告诉操作系统在磁盘上实际写入数据,而不是等待输出缓冲区中的更多数据。有些操作系统会在磁盘上刷新数据,有些操作系统会尽快处理。

    Redis支持三种不同的模式:

    no: 不要fsync,只需让操作系统在需要的时候刷新数据。Faster

    always: fsync每次写完后只添加日志。Slow,Safest

    everysec: fsync每秒钟一次。Compromise

    默认的是“everysec”,因为这通常是速度和数据安全之间的正确折衷。由你理解如果你能放松这个“不”字,让操作系统刷新输出缓冲区时,为了更好的表现(但是如果你可以忍受一些数据丢失的想法考虑默认快照的持久性模式),或相反,使用“always”非常缓慢但比”everysec”更安全一点。

    如果不确定,就用“everysec”。

    27.  no-appendfsync-on-rewriteno

    如果您有延迟问题,请将其转换为"yes"。否则,从持久性的角度来看,设置为"no"是最安全的选择。

    28.  auto-aof-rewrite-percentage100

    auto-aof-rewrite-min-size64 mb

    自动重写附加文件

    Redis能够自动地重写日志文件,当AOF日志大小以指定的百分比增长时,隐式地调用BGREWRITEAOF。

    工作方式:Redis记得在最近一次重写后的AOF文件的大小(如果在重启后没有重写,那么在启动时AOF的大小就会被使用)。

    此基础大小与当前大小比较。如果当前的大小大于指定的百分比,则会触发重写。您还需要为AOF文件指定一个最小的大小来重写,这对于避免重写AOF文件是很有用的,即使增加了百分比,但是它仍然很小。

    指定一个百分比为零,以禁用自动的重写功能。

    29.  aof-load-truncatedyes

    在Redis启动过程中,当AOF数据被加载回内存时,可能会发现AOF文件被截断。

    如果将aof-load-truncated设置为yes,将加载一个被截断的AOF文件,而Redis服务器将开始发出日志以通知用户该事件。否则,如果选项被设置为no,服务器会以错误中止并拒绝启动。当选项设置为no时,用户需要在重新启动服务器之前使用“redis-checkaof”工具修复AOF文件。

    注意,如果在中间发现AOF文件被损坏,服务器仍然会以错误退出。此选项只适用于Redis将尝试从AOF文件读取更多数据,但不会找到足够的字节。

    30.  cluster-enabled yes

    开启集群

    31.  cluster-config-file nodes-6379.conf

    每个集群节点都有一个集群配置文件。它是由Redis节点自动创建和更新的。每个Redis集群节点都需要一个不同的集群配置文件。

    注:确保在同一系统中运行的实例没有重叠的集群配置文件名。集群的配置,配置文件首次启动自动生成。

    32.  cluster-node-timeout 5000

    群集节点超时是指节点在失败状态下必须不可到达的毫秒数。大多数其他内部时间限制是节点超时的倍数。

    注:请求超时,设置5秒够了。

    33.  cluster-require-full-coverageyes

    默认情况下,Redis集群节点如果检测到至少有一个散列槽(没有可用的节点正在服务),就会停止接受查询。这样,如果集群部分宕机(例如,不再覆盖散列槽的范围),那么所有集群最终都将不可用。当所有的插槽再次被覆盖时,它会自动返回。

    但是,有时您希望集群的子集继续工作,继续接受仍然覆盖的关键空间部分的查询。为了做到这一点,只需将cluster-require-full-coverage选项设置为no。

    34.  slowlog-log-slower-than10000

    “Redis慢速日志”是一个记录超过指定执行时间的查询的系统。执行时间不包括I/O操作,比如与客户端,发送应答等等,但就实际执行命令所需的时间(这是唯一阶段命令执行的线程被阻塞,不能同时处理其他请求)。

    您可以使用两个参数来配置慢速日志:一个告诉Redis,在微秒内,执行时间超过了命令的执行时间,另一个参数是慢日志的长度(第18条)。当新命令被记录时,最老的命令将从已记录的命令队列中删除。

    单位:微秒

    35.  slowlog-max-len128

    这个长度没有限制。只要意识到它会消耗内存。可以回收利用慢速日志重置的慢速日志。

    36.  latency-monitor-threshold0

    Redis延迟监控子系统在运行时对不同的操作进行采样,以便收集与Redis实例可能的延迟来源相关的数据。

    通过延迟命令,用户可以使用这些信息来打印图表并获取报告。

    该系统只记录在一个时间内执行的操作,该操作的时间等于或大于通过延迟监控阈值配置指令所指定的毫秒数。当它的值设置为0时,延迟监视器就关闭了。

    默认情况下,延迟监视是禁用的,因为如果您没有延迟问题,并且收集数据具有性能影响,那么在很大的负载下可以度量数据的性能影响。在运行时,如果需要,可以很容易地使用命令"CONFIGSET latency-monitor-threshold <milliseconds>"来启用延迟监视。

    37.  hash-max-ziplist-entries512

    hash-max-ziplist-value64

    Hashes使用内存有效的数据结构进行编码,当它们有少量的条目时,最大的条目不超过给定的阈值。可以使用以下指令来配置这些阈值。

    38.  list-max-ziplist-size-2

    列表也以一种特殊的方式编码,以节省大量空间。每个内部列表节点允许的条目数可以指定为固定的最大大小或元素的最大数量。对于固定的最大尺寸,使用-5到-1,意思是:

    -5:最大大小:64kb -> 不推荐用于正常工作负载

    -4:最大尺寸:32kb -> 不推荐

    -3:最大尺寸:16kb -> 可能不推荐

    -2:最大尺寸:8kb  -> 很好

    -1:最大尺寸:4 Kb -> 很好

    正数意味着存储到每个列表节点上的元素数量。

    最高执行选项通常是-2 (8kb大小)或-1 (4Kb大小),但如果您的用例是惟一的,则根据需要调整设置。

    39.  list-compress-depth0

    列表也可能被压缩

    压缩深度是列表的每个边的quicklist ziplist节点的数量,以排除压缩。列表的头和尾总是为快速的push/pop操作而没有压缩。

    设置:

    0:禁用所有列表压缩。

    1:depth 1的意思是“在1个节点进入列表后,从头部或尾部开始压缩”

    So:[head]->node->node->...->node->[tail],[head],[tail]将始终未压缩;内部节点将压缩。

    2: [head]->[next]->node->node->...->node->[prev]->[tail]

    2在这里的意思是:不要压缩head或head->next或tail->prev或tail,而是压缩它们之间的所有节点。

    3:[head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail]

    40.  set-max-intset-entries512

    集合有一个特殊的编码:当一个集合由刚好是在64位有符号整数范围内的基数10中的整数组成。

    此配置设置设置了大小的限制。

    41.  zset-max-ziplist-entries128

    zset-max-ziplist-value64

    与散列和列表类似,排序集也是经过特殊编码的,以节省大量空间。

    注:此编码仅当排序集的长度和元素低于以下限制时使用。

    42.  hll-sparse-max-bytes3000

    HyperLogLog稀疏表示字节限制。这个限制包括16个字节的标题。当使用稀疏表示的超loglog跨越这个限制时,它被转换为稠密表示。

    注:一个大于16000的值是完全无用的,因为在那个点上,稠密表示的内存更有效。

    建议值为3000,以便在不减速的情况下获得空间有效编码的好处,而PFADD是O(N),编码稀疏。当CPU不受关注时,可将值提高到10000,但是空间、数据集由许多具有基数在0 -15000范围内的超loglog组成。

    43.  activerehashingyes

    Active rehashing每100毫秒使用1毫秒的CPU时间来帮助重散主Redis哈希表(一个映射到值的顶级键)。

    默认情况下,每秒钟使用这个毫秒为10次,以便主动地对主字典进行重新处理,在可能的情况下释放内存。

    使用“activerehashing no”,如果您有很强的延迟需求,并且在您的环境中,Redis可以不时地以2毫秒的延迟来答复查询,这不是一件好事。

    使用“activerehashing yes”如果您没有这样的硬性要求,但希望在可能的情况下尽快释放内存。

    44.  client-output-buffer-limitnormal 0 0 0

    client-output-buffer-limitslave 256mb 64mb 60

    client-output-buffer-limitpubsub 32mb 8mb 60

    客户端输出缓冲区的限制可以用来强迫那些由于某些原因而不能快速读取服务器数据的客户断开连接(一个常见的原因是,Pub/Sub客户端不能像发布服务器那样快速地使用消息)。

    对于三种不同类型的客户,可以设置不同的限制:

    normal : normal clients包括监控客户端

    slave : slave clients

    pubsub : 客户端订阅了至少一个pubsub通道或模式

    每个client-output-buffer-limit指令的语法如下:

    client-output-buffer-limit <class> <hardlimit> <soft limit> <soft seconds>

    当达到硬限值时,客户端会立即断开连接,或者如果达到了软限制,并且持续达到指定的秒数(持续)。

    例如如果硬限制是32字节和软限制是16 mb / 10秒,客户端会立即断开输出缓冲区的大小达到32字节,但也会断开如果客户达到16字节,不断克服了限制10秒钟。

    默认情况下,正常的客户机不受限制,因为它们不会在没有请求的情况下接收数据(按push方式),但是在请求之后,所以只有异步客户机可能会创建一个场景,在这个场景中,请求数据的速度比读取的速度要快。相反,对于pubsub和从客户端来说,这是一个默认的限制,因为订阅者和奴隶会以推送的方式接收数据。

    无论是强的还是弱的限制都可以通过设置为零来禁用。

    45.  hz 10

    Redis调用一个内部函数来执行许多后台任务,比如超时关闭客户机连接、清除未请求的过期键等。不是所有的任务都以相同的频率执行,但是Redis检查任务是否按照指定的“hz”值执行。

    默认的“hz”设置为10。当Redis空闲时,提高该值将使用更多的CPU,但同时,当有许多键同时到期时,将使Redis更加敏感,并且可以更精确地处理超时。

    注:这个范围在1到500之间,但是超过100通常不是一个好主意。大多数用户应该使用默认的10,并且只在需要非常低延迟的环境中提高到100。

    46.  aof-rewrite-incremental-fsyncyes

    当一个child重新编写AOF文件时,如果启用了该选项,那么这个文件将被fsync-ed每32 MB的数据生成。这是有用的,以便更增量地将文件提交到磁盘,并避免较大的延迟峰值。

    47.  活动碎片整理(实验阶段)

    Active(在线)碎片整理允许Redis服务器压缩内存中的小分配和数据分配之间的空间,从而允许回收内存。

    分段是一个自然的过程,每个分配器都会发生(但是使用Jemalloc,幸运的是)和某些工作负载。通常需要重新启动服务器,以降低碎片化,或者至少要清除所有数据并重新创建。然而,由于OranAgra为Redis4.0实现的这个特性,这个过程可以在运行时以“热”的方式运行,而服务器正在运行。

    基本上碎片超过一定水平时(见下面的配置选项)复述,将开始创建新副本的值在连续的内存区域利用特定Jemalloc特性(为了理解如果一个分配导致分裂和分配在一个更好的地方),同时,将旧的数据的副本。这个过程,对所有键重复地重复,将导致碎片返回到正常值。

    注:

    1)       默认情况下,该特性是禁用的,并且只有在您编译Redis时才会使用Jemalloc的副本,我们使用的是Redis的源代码。这是Linux构建的默认值。

    2)       如果没有碎片问题,则不需要启用该特性。

    3)       一旦您经历了碎片化,您就可以在需要时启用这个特性,而命令“CONFIG SETactivedefrag yes”。

    配置参数能够微调碎片整理过程的行为。如果您不确定它们的含义,那么保留缺省值是一个好主意。

    配置:

    a)       activedefrag yes

    启用活跃碎片整理

    b)       active-defrag-ignore-bytes 100mb

    最小的碎片浪费开始活动的碎片整理

    c)       active-defrag-threshold-lower 10

    最小百分比的碎片开始活动的碎片整理

    d)       active-defrag-threshold-upper 100

    我们使用最大努力的碎片的最大百分比

    e)       active-defrag-cycle-min 25

    在CPU百分比中对defrag最小的效率

    f)        active-defrag-cycle-max 75

    在CPU百分比中对defrag最大的效率

    欢迎关注“程序杂货铺”公众号,里面有精彩内容,欢迎大家收看^_^

    展开全文
  • 对各子系统进行数学建模,建立了信息感知、电子对抗、指挥控制和网络通信这4大子系统体系的性能模型,并提出基于多目标遗传算法的分层次体系性能配置模型,通过对模型的求解实现对系统体系的合理配置。通过仿真实验...
  • 备件库存配置优化是提高装备战备完好性、降低装备寿命周期费用的重要途径。...该模型以装备可用度和库存费用为优化目标,通过优化备件库存配置结构,形成合理的备件库存配置方案,从而降低备件配置费用,避免资源浪费。
  • 为了保护黑龙江省大兴安岭天然林区的...结果表明:目前黑龙江省大兴安岭天然林区土地资源配置及林种结构极不合理,经过土地资源优化配置和林种结构调整后,用于生态公益林的土地资源增加,生态公益林面积比例超过70%。
  • 测试开发需要学习的知识结构

    万次阅读 多人点赞 2018-04-12 10:40:58
    - 假装在测试的回答 - 知乎作为一名软件测试人员,有哪些网站是你应该多多关注的,哪些书籍是你必须要看的? - 假装在测试的回答 - 知乎白盒与黑盒测试什么区分1、黑盒测试 黑盒测试也称功能测试或数据驱动测试,...
  • 研究了平稳随机激励下随机智能桁架结构振动主动控制中主动杆的配置位置和闭环控制系统增益的优化问题。考虑结构物理参数、几何尺寸、阻尼...通过算例,验证了该优化配置模型的合理性和有效性,获得了若干有意义的结论。
  • 低温等离子体表面处理可以有效克服液相处理法存在的环境污染、耗能大和成本高的缺点,对材料表面进行清洗、活化和接枝处理,而设计一个合理的低温等离子体放电结构能够较好地改进表面处理的质量.通过建立CRFHCP空心...
  • 针对海上定期保障模式下,将多层级复杂装备结构等效为单层级,提出一种备件需求分析与配置优化的近似方法,根据系统可靠性理论,建立了多阶段任务下的装备可用度评估模型,采用基于补给周期的分段求解方法....
  • HBase生产环境配置与使用优化

    千次阅读 2018-11-12 10:16:19
    确定完硬件方面的部署结构,下一个关键步骤是对HBase的配置进行优化调整,尽可能发挥硬件的最大优势。 先看一下具体的硬件配置: 总内存:256G 可分配内存:256 * 0.75 = 192G 总硬盘:1.8T * 12 = 21.6T ...
  • mysql性能优化配置优化

    千次阅读 2016-11-16 17:20:34
    通过根据服务器目前状况,修改MySQL的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能。   2、服务器参数: 32G内存、4个CPU,每个CPU 8核。 3、MySQL目前安装状况。  MySQL目前...
  • 数据表结构的设计与性能优化

    千次阅读 2016-01-15 16:18:11
    1 数据表结构的设计与性能优化 1.1 、数据表的存储原理 SQL Server每次读取1个存储块,每个存储块大小为8KB,每读取1个存储块计算为1个逻辑读。 问题:如果数据内容非常大,像我们系统中的Feeling...
  • 7 :Tomcat中JVM内存溢出及合理配置

    千次阅读 2016-11-03 17:56:47
    非堆就是JVM留给自己用的,所以JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中,它和堆不同,运行期内GC不会释放其空间...
  • jvm的结构 设置 疑问点 垃圾回收原理 方式, 触发条件。 设置等等的相关纤细介绍
  • SQL优化方案

    万次阅读 2019-05-08 15:49:10
    转载至:http://blog.itpub.net/31555484/viewspace-2565387/ 作者1:惨绿少年 ... 作者2:喜欢拿铁的人 ... 在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    需要注意Jdk 1.8中对HashMap的实现做了优化,当链表中的节点数据超过八个之后,该链表会转为红黑树来提高查询效率,从原来的O(n)到O(logn) 24. 说一下 HashSet 的实现原理? HashSet底层由HashMap实现 HashSet的值存放...
  • 一、 优化概述 MySQL数据库是常见的两个瓶颈是CPU和I/O的瓶颈, CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。 磁盘I/O瓶颈发生在装入数据远大于内存容量的时候,如果应用分布在网络上,...
  • -server:服务器模式,在多个CPU时性能佳,启动慢但性能好,能合理管理内存。 -XX:+HeapDumpOnOutOfMemoryError:在堆溢出时保存快照 shell命令重定向绑定: nohup command > / dev / null 2 > & 1 & ...
  • druid的优化杂谈

    2020-04-22 16:04:36
    1、基于DataSource与Segment的数据结构 druid中segment 大小存储的因为其一般由dataSource_beginTime_endTime_version_shardNumber做唯一标识。所以一般我们可以根据产生数据频率设置文件生成的周期跨度 (1)、通过...
  • 1.配置优化 第一个环节是客户端连接到服务端,连接这一块有可能会出现什么样的性能问题?有可能是服务端连接数不够导致应用程序获取不到连接。比如报了一个 Mysql: error1040: Too many connections 的错误。 我们...
  • Tomcat在各位JavaWeb从业者常常就是默认的开发环境,但是Tomcat的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. 幸好Tomcat还有很多的提升空间.下文介绍一下Tomcat优化,可以分为...
  • MySQL 优化器原来是这样工作的

    千次阅读 2020-07-02 14:55:35
    MySQL 优化器使用基于成本的优化方式(Cost-based Optimization),利用内置的成本模型和数据字典信息以及存储引擎的统计信息决定使用哪些步骤实现查询语句,也就是查询计划。同时,MySQL 为我们提供了控制优化器的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 93,784
精华内容 37,513
关键字:

优化人员结构合理配置人员