内存参数

es高级优化

夙愿已清 提交于 2019-11-28 05:38:34
首先说明,此篇文章为转载,原文url:https://segmentfault.com/a/1190000017908981,我只是一个优秀的搬砖工,看到优秀的文章自然要和大家分享。 这是目前为止我觉得最优秀的es调优之一,之前的优化也各有长处,但是写这篇文章的大神是真正的10亿数据调优的大神,几乎涵盖了我翻过的所有的文章,所以佩服。 “ELK”是 ElasticSearch、Logstash、Kibana 三门技术的简称。如今 ELK 技术栈在互联网行业数据开发领域使用率越来越高,做过数据收集、数据开发、数据存储的同学相信对这个简称并不陌生,而ElasticSearch(以下简称 ES)则在 ELK 栈中占着举足轻重的地位。 前一段时间,我亲身参与了一个 ES 集群的调优,今天把我所了解与用到的调优方法与大家分享,如有错误,请大家包涵与指正。 系统层面的调优 系统层面的调优主要是内存的设定与避免交换内存。 ES 安装后默认设置的堆内存是 1GB,这很明显是不够的,那么接下来就会有一个问题出现:我们要设置多少内存给 ES 呢? 其实这是要看我们集群节点的内存大小,还取决于我们是否在服务器节点上还是否要部署其他服务。 如果内存相对很大,如 64G 及以上,并且我们不在 ES 集群上部署其他服务,那么我建议 ES 内存可以设置为 31G-32G,因为这里有一个 32G 性能瓶颈问题

缓存相关

本小妞迷上赌 提交于 2019-11-28 04:09:05
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的 hashmap 。其 守护进程 (daemon )是用 C 写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。 Memcached安装和基本使用 Memcached安装: ? 1 2 3 4 5 6 7 8 wget http: / / memcached.org / latest tar - zxvf memcached - 1.x .x.tar.gz cd memcached - 1.x .x . / configure && make && make test && sudo make install PS:依赖libevent yum install libevent - devel apt - get install libevent - dev 启动Memcached ? 1 2 3 4 5 6 7 8 9 10 memcached - d - m 10 - u root - l 10.211 . 55.4 - p 12000 - c 256 - P / tmp / memcached.pid

专职DBA-MySQL优化

穿精又带淫゛_ 提交于 2019-11-28 03:56:02
专职DBA-MySQL优化 1.优化哲学 为什么优化? 为了获得成就感? 为了证实比系统设计者更懂数据库? 为了从优化成果来证实优化者更有价值? 但通常事实证明的结果往往会和你期待的相反! 优化有风险,涉足需谨慎! 2.优化风险 优化不总是对一个单纯的环境进行!还很可能是一个复杂的已投产的系统。 优化手段本来就有很大的风险,只不过你没能力意识到和预见到! 任何的技术可以解决一个问题,但必然存在带来另一个问题的风险! 对于优化来说解决问题而带来的问题控制在可接受的范围内才是有成果的。 优化后,保持现状或出现更差的情况都是失败! 稳定性和业务可持续性通常比性能更重要! 优化不可避免的就是涉及到变更,变更就有风险! 优化使性能变好,维持和变差是等概率事件! 优化不能只是DBA担当风险,但会所有的人分享优化成果! 所以优化工作是由业务需要驱使的!!! 3.谁会参与优化 数据库工程师 业务部门代表 应用程序架构师 应用程序设计人员 应用程序开发人员 硬件及系统管理员 存储管理员 网络工程师 研发人员 4.优化方向 安全优化(业务持续性) 性能优化(业务高效性) 5.优化的范围及思路 优化范围: 存储、主机和操作系统: 主机架构稳定性 I/O规划及配置 Swap OS内核参数 网络问题 应用程序:(Index,lock,session) 应用程序稳定性和性能 SQL语句性能 串行访问资源

tomcat下jvm参数配置详解

流过昼夜 提交于 2019-11-28 03:45:06
在解释下面知识之前,一个很重要的知识点必须了解,那就是tomcat本身是不能直接运行在计算机上的,必须依赖硬件基础上的计算机和一个java虚拟机,这也就解释了为什么在安装运行tomcat前必须要安装jvm的原因了。所以说如果运行一个比较大的应用程序的话,一个性能高的jvm和合适的参数配置对程序的性能影响很大, 因为Sun公司和其它一些公司一直在为提高性能而对java虚拟机做一些升级改进。一些报告显示JDK1.4在性能上比JDK1.3提高了将近10%到20%。 随便google一下关于 OutOfmemoryError:PermGen Space 这个错误的解决方法,可以搜到许多帖子,但都大同小异,无非就是修改tomcat的启动参数,其实说的更具体一些是在tomcat下修改jvm参数。 1、必须了解的java内存机制---内存区划分和垃圾回收机制 栈内存(Stack): 一个线程就会有一个线程的 JVM 栈与之对应,因为不过的线程执行逻辑显然不同,因此都需要一个独立的 JVM 栈来存放该线程的执行逻辑。这个内存区是用来存储 基本变量 和 引用变量 堆内存(Heap): Java Heap分为3个区 1.Young 2.Old 3.Permanent,其中Young刚实例化的对象,如果满了的话,将移动到old中。而permanent 用于存放Class和Meta信息

详解Tomcat配置JVM参数步骤

会有一股神秘感。 提交于 2019-11-28 03:44:50
这里向大家描述一下如何使用Tomcat配置 JVM 参数,Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的 操作系统 和一个 Java 虚拟机。您可以选择自己的需要选择不同的操作系统和对应的JDK的版本,但还是推荐您使用Sun公司发布的JDK。 Tomcat配置JVM参数 Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机。您可以选择自己的需要选择不同的操作系统和对应的JDK的版本(只要是符合Sun发布的Java规范的),但我们推荐您使用Sun公司发布的JDK。确保您所使用的版本是最新的,因为Sun公司和其它一些公司一直在为提高性能而对java虚拟机做一些升级改进。一些报告显示JDK1.4在性能上比JDK1.3提高了将近10%到20%。 可以给Java虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿。可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。 参数 描述 -Xms JVM初始化堆的大小 -Xmx JVM堆的最大值 这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要

【JVM】jvm启动参数

妖精的绣舞 提交于 2019-11-28 03:43:58
-server -Xmx2048m -Xms1500m -Xmn1024m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 m: 堆 s:栈stack -Xmx: 表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。但是开发过程中,通常会将 -Xms 与 -Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源。 -Xms: 表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍需按照实际情况进行分配。有可能真的按照这样的一个规则分配时,设计出的软件还没有能够运行得起来就挂了。 -Xmn: 设置年轻代大小。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小

深入Delphi下的DLL编程

夙愿已清 提交于 2019-11-28 00:24:32
深入Delphi下的DLL编程 作者:岑心 引 言 相信有些计算机知识的朋友都应该听说过“DLL”。尤其是那些使用过windows操作系统的人,都应该有过多次重装系统的“悲惨”经历——无论再怎样小心,没有驱动损坏,没有病毒侵扰,仍然在使用(安装)了一段时间软件后,发现windows系统越来越庞大,操作越来越慢,还不时的出现曾经能使用的软件无法使用的情况,导致最终不得不重装系统。这种情况常常是由于dll文件的大量安装和冲突造成的。这一方面说明DLL的不足,另一方面也说明DLL的重要地位,以至我们无法杜绝它的使用。 DLL(动态链接库,Dynamic Link Library)简单来说是一种可通过调用执行的已编译的代码模块。DLL是windows系统的早期产物。当时的主要目的是为了减少应用程序对内存的使用。只有当某个函数或过程需要被使用时,才从硬盘调用它进入内存,一旦没有程序再调用该DLL了,才将其从内存中清除。光说整个windows系统,就包括了成百上千个dll文件,有些dll文件的功能是比较专业(比如网络、数据库驱动)甚至可以不安装的。假如这些功能全部要包括在一个应用程序(Application program)里,windows将是一个数百M大小的exe文件。这个简单的例子很容易解释DLL的作用,而调用DLL带来的性能损失则变得可被忽略不计。 多个应用程序调用同一个DLL

Java方法调用机制

陌路散爱 提交于 2019-11-27 23:34:40
最近在编程时,修改方法传入对象的对象引用,并没有将修改反映到调用方法中。奇怪为什么结果没有变化,原因是遗忘了Java对象引用和内存分配机制。本文介绍3个点:   ① 该问题举例说明   ② 简要阐述Java内存区域   ③ 介绍JVM中方法调用的机制 1. Java方法调用传参实例解析 Java中参数传递是值传递,即调用方法时,所有参数的传递都是值传递。基本类型直接将值拷贝给方法参数,引用类型将引用地址拷贝给方法参数。先看两个String类型和对象引用的实例。 (1)字符串对象引用 public static void main(String[] args) { String a = "123"; app(a); System.out.println(a); } private static void app(String a) { //String不可修改,只会重新创建,故main中a不变 a += "456"; } 输出:123 分析:结果并没有因为调用了app方法,而输出123456。如注释中描述,String(由字符数组实现)是不可修改的,所有的修改都会重新创建新的String对象,并且字符串拼接也会重新创建String对象(具体见下文)。也就是说app中的a字符串引用已不再指向main中a指向的内存块,即main方法中a指向的内存块中字符串的值没有发送变化。

jvm对象内存分配

╄→гoц情女王★ 提交于 2019-11-27 23:26:04
一、jvm简单结构图        1、jvm内存对象分配整体流程:        1、类加载子系统和方法区     类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,     方法区中可能还会存放运行时常量池信息,包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。   2、java堆     堆空间在jvm启动的时候即根据设置(后续 jvm参数调优)创建,是java程序中最主要的内存工作区域。堆空间是所有线程共享的。     jvm分配对象,一般来说,new个新对象,都是分配在堆空间的。其实这也不是绝对的,存在部分对象的分配是在栈上以及TLAB中。     TLAB:全称 Thread Local Allocation Buffer,线程本地分配缓存区,是一个为线程分配的专用的内存使用区域。在使用参数 -XX:UseTLAB 打开设置的时候,在进行         线程初始化的时候,会去分配一小块的内存区域供线程使用,这样如果使用,直接在自己的内存区域就可以直接分配使用了,提高效率。         默认的空间大小为Eden区的 1%,-XX:TLABWasteTargetPercent可以设置 TLAB 占 Eden区的百分比大小。     对象分配流程图:        上图:

人脸识别Demo解析C#

試著忘記壹切 提交于 2019-11-27 21:40:28
概述 不管你注意到没有,人脸识别已经走进了生活的角角落落,钉钉已经支持人脸打卡,火车站实名认证已经增加了人脸自助验证通道,更别提各个城市建设的『智能城市』和智慧大脑了。在人脸识别业界,通常由人脸识别提供商和人脸识别应用接入方组成,从头到尾研发人脸识别技术需要极强的专用技术知识和数学算法功底,对于大多数企业来说,选择人工智能AI公司现成的人脸识别技术引擎是一个比较适合的解决方法。虹软公司在2017年开放了人脸识别平台1.0版本,经过三年的技术迭代和更新,目前已经推出了2.2版本,主打离线,免费,适合场景比较广泛。为了方便开发者接入,虹软官方提供了各个语言版本的Demo程序,由于虹软并没有提供C#版本的SDK,因此,他们提供的C#版本的SDK就更有参考价值了。 虹软Demo的下载地址如下: https://github.com/ArcsoftEscErd/ArcfaceDemo_CSharp_2.2 在开始之前,建议你下载它。 什么是人脸识别 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。 而人脸识别的过程可以简的概括为:检测人脸框->提取人脸特征信息->人脸库检索匹配信息三个过程。 人脸识别的应用场景