内存参数

Tomcat 内存溢出对应解决方式

早过忘川 提交于 2019-12-12 14:50:33
1.Tomcat内存溢出的原因   生产环境中Tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。 这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况: OutOfMemoryError: Java heap space OutOfMemoryError: PermGen space OutOfMemoryError: unable to create new native thread.   Tomcat内存溢出解决方案 对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX:PermSize -XX:MaxPermSize) 最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。 回到顶部 2.OutOfMemoryError 堆内存溢出 a.原因分析: JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置. JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。 可以利用JVM提供的-Xmn - Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion

PostgreSQL 参数调整(性能优化)

怎甘沉沦 提交于 2019-12-11 23:26:55
PostgreSQL 参数调整(性能优化) https://www.cnblogs.com/VicLiu/p/11854730.html 知道一个 shared_pool 文章写的挺好的 还没仔细看 昨天分别在外网和无外网环境下安装PostgreSQL,有外网环境下安装的相当顺利。但是在无外网环境下就是两个不同的概念了,可谓十有八折。感兴趣的同学可以搭建一下。 PostgreSQL安装完成后第一件事便是做相关测试,然后调整参数。 /*CPU 查看CPU型号*/ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c /*查看物理CPU个数*/ cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l /*查看逻辑CPU个数*/ cat /proc/cpuinfo | grep "processor" | wc -l /*查看CPU内核数*/ cat /proc/cpuinfo | grep "cpu cores" | uniq /*查看单个物理CPU封装的逻辑CPU数量*/ cat /proc/cpuinfo | grep "siblings" | uniq /*计算是否开启超线程 ##逻辑CPU > 物理CPU x CPU核数 #开启超线程 ##逻辑CPU = 物理CPU

linux内核参数注释与优化

折月煮酒 提交于 2019-12-11 09:01:33
linux内核参数注释与优化 记录好文章。 https://blog.51cto.com/yangrong/1567427 目录 1、linux内核参数注释 2、两种修改内核参数方法 3、内核优化参数生产配置 参数解释由网络上收集整理,常用优化参数对比了网上多个实际应用进行表格化整理,使查看更直观。 学习linux也有不少时间了,每次优化linux内核参数时,都是在网上拷贝而使用,甚至别人没有列出来的参数就不管了,难道我就不需要了吗? 参考文章: linux内核TCP相关参数解释 http://os.chinaunix.net/a2008/0918/985/000000985483.shtml linux内核参数优化 http://blog.chinaunix.net/uid-29081804-id-3830203.html linux内核调整和内核参数详解 http://blog.csdn.net/cnbird2008/article/details/4419354 1、linux内核参数注释 以下表格中红色字体为常用优化参数 根据参数文件所处目录不同而进行分表整理 下列文件所在目录:/proc/sys/net/ipv4/ 名称 默认值 建议值 描述 tcp_syn_retries 5 1 对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255

结构体(结构体嵌套、结构体指针、结构体参数传递)

谁都会走 提交于 2019-12-10 19:13:35
结构体(struct) 1、基本概念 结构体-----将不同类型的数据成员组织到统一的名字之下,适用于对关系紧密,逻辑相关、具有相同或不同类型的数据进行处理 2、结构体定义格式 struct 结构名(也可称作结构标识符) { 类型 变量名; 类型 变量名; ······ }; struct 结构名 结构变量; 或者 struct 结构名 { 类型 变量名; 类型 变量名; ······ }结构变量; 例:声明结构体类型的同时定义变量名 1 struct student 2 { 3   int num; 4 }teacher; (声明结构体类型仅仅是声明了一个类型, 系统并不为之分配内存 ,就如同系统不会为类型 int 分配内存一样。只有当使用这个类型定义了 变量 时,系统才会为变量分配内存。所以在声明结构体类型的时候,不可以对里面的变量进行初始化。) 定义了一个结构名为student的结构体和一个结构变量teacher,如果省略变量名(teacher),就变成了对结构的声明,上述结构体声明也可分开写 1 struct student 2 { 3   int num; 4 }; 5 6 struct student teacher; 与上面效果相同,可理解为 struct student类似于int ,而我们用的是teacher类似于变量,如果省略结构名,则称之为无名结构

jni详解(摘自《jni详解》)

北战南征 提交于 2019-12-10 14:08:18
本书涵盖了 Java Native Interface(JNI)的内容,将探讨以下问题: • 在一个 Java 项目中集成一个 C/C++库 • 在一个用 C/C++开发的项目中,嵌入 JavaVM • 实现 Java VM • 语言互操作性问题,特别是互操作过程中的垃圾回收(GC, garbage collection)和并 发编程(multithreading) 译注: JNI(Java Native Interface)是 SUN 定义的一套标准接口,如 Dalvik, Apache Harmony 项目...等 Java 虚拟机,都会实现 JNI 接口,供本地(C/C++)应用与 Java VM 互调。 JNI: 可以供 Java 代码调用本地代码,本地代码也可以调用 Java 代码,即上文列出的第 4 条内容:语言互操作;所以,这是一套完善而功能强大的接口。 可能有朋友听说过 KNI,那是 J2ME VM(CLDC)中定义的一套东西,不如 JNI 强大。 此外,因为 C/C++在系统编程领域的地位,只要打通了与 C/C++的接口,就等于是天堑变 通途。 首先,通过本书,你会很容易的掌握 JNI 开发,并能了解到方方面面的关于 JNI 的知识。 本书详尽的叙述,会带给你你很多如何高效使用 JNI 的启示。JNI 自 1997 年初发布以来, Sun 的工程师们和 Java

.NET面试题解析(01)-值类型与引用类型

限于喜欢 提交于 2019-12-10 09:14:24
常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还是值类型?enum、int[]和string呢? 4. 堆和栈的区别? 5. 什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗? 6.“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗? 7. 理解参数按值传递?以及按引用传递? 8. out 和 ref 的区别与相同点? 9. C#支持哪几个预定义的值类型?C#支持哪些预定义的引用类型? 10. 有几种方法可以判定值类型和引用类型? 11. 说说值类型和引用类型的生命周期? 12. 如果结构体中定义引用类型,对象在内存中是如何存储的?例如下面结构体中的class类 User对象是存储在栈上,还是堆上? public struct MyStruct { public int Index; public User User; 认识值类型与引用类型 万变不离其宗,只要搞清楚值类型和引用类型的原理,上面所有题目就都迎刃而解了。 基本概念 CLR支持两只类型: 引用类型 和 值类型 。这是.NET语言的基础和关键,他们从类型定义、实例创建、参数传递,到内存分配都有所不同。虽然看上去简单,但真正理解其内涵的人却好像并不多。 图片引用 下图清晰了展示了.NET中类型分类,值类型主要是一些简单的、基础的数据类型

Docker 容器的资源限制 cgroup(九)

浪尽此生 提交于 2019-12-09 22:07:05
一、cgroup简介 docker 通过 cgroup 来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。 cgroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如 cpu、memory、磁盘IO等等) 的机制,被 LXC、docker 等很多项目用于实现进程资源控制。cgroup 将任意进程进行分组化管理的 Linux 内核功能。cgroup 本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O 或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为 cgroup 子系统,有以下几大子系统实现: blkio:设置限制每个块设备的输入输出控制。例如:磁盘,光盘以及 usb 等等。 cpu:使用调度程序为 cgroup 任务提供 cpu 的访问。 cpuacct:产生 cgroup 任务的 cpu 资源报告。 cpuset:如果是多核心的 cpu,这个子系统会为 cgroup 任务分配单独的 cpu 和内存。 devices:允许或拒绝 cgroup 任务对设备的访问。 freezer:暂停和恢复 cgroup 任务。 memory:设置每个 cgroup 的内存限制以及产生内存资源报告。 net_cls

Spark数据倾斜解决方案及shuffle原理

99封情书 提交于 2019-12-09 21:30:03
数据倾斜调优与shuffle调优 数据倾斜发生时的现象 1)个别task的执行速度明显慢于绝大多数task(常见情况) 2)spark作业突然报OOM异常(少见情况) 数据倾斜发生的原理 在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理。此时如果某个key对应的数据量特别大的话,就会发生数据倾斜。以至于大部分task只需几分钟,而个别task需要几小时,导致整个task作业需要几个小时才能运行完成。而且如果某个task数据量特别大的时候,甚至会导致内存溢出的情况。 定位数据倾斜发生的位置 数据倾斜只会发生在shuffle过程中,因此我们要先确定数据倾斜发生在第几个stage中,我们可以通过Web UI来查看当前运行到了第一个stage,以及该stage中各个task分配的数据量,来确定是不是由数据分配不均导致的数据倾斜。 一旦确定数据倾斜是由数据分配不均导致,下一步就要确定数据倾斜发生在哪一个stage之后,根据代码中的shuffle算子,推算出stage与代码的对应关系,判定数据倾斜发生的位置。 数据倾斜的解决方案 1)使用Hive ETL预处理数据 适用场景 :Hive里的源数据本身就不均匀,并且需要对Hive表频繁进行shuffle操作 解决方案 :在Hive中预先对数据按照key进行聚合或是和其他表进行join

详解JVM内存模型与JVM参数详细配置

回眸只為那壹抹淺笑 提交于 2019-12-09 17:15:48
对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。 JVM内存结构 由上图可以清楚的看到JVM的内存空间分为3大部分: 堆内存 方法区 栈内存 其中栈内存可以再细分为java虚拟机栈和本地方法栈,堆内存可以划分为新生代和老年代,新生代中还可以再次划分为Eden区、From Survivor区和To Survivor区。 其中一部分是线程共享的,包括 Java 堆和方法区;另一部分是线程私有的,包括虚拟机栈和本地方法栈,以及程序计数器这一小部分内存。 堆内存(Heap) 对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。 此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。 堆内存是所有线程共有的,可以分为两个部分:年轻代和老年代。 下图中的Perm代表的是永久代,但是注意永久代并不属于堆内存中的一部分,同时jdk1.8之后永久代已经被移除。 新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 ) 默认的,Eden : from : to = 8 : 1 : 1

Memcached那些事

偶尔善良 提交于 2019-12-09 12:48:32
#Memcached那些事 本文不是为了介绍Memcached是什么,而是讨论在使用Memcached的时候你必须知道的一些事情。以便于方便排查和更好的使用Memcached。本文主要围绕两个方面来讨论这个话题:Memcached的使用和监控。 ##如何更好的使用Memcached 这部分讨论的是如何能够合理有效的让Memcached为我们服务,通过什么方式来调控Memcached,让它工作的更好。下面进入这部分的内容: ###Memcached如何存储我们的数据? 要很好的使用Memcached,那么必须知道我们的数据交给Memcached,它是怎么处理它们的。为了说明这个,需要先了解几个名词:slab class,page,chunk。它们三者之间的关系如下: slab class :memcached会自动根据设置的chunk size以及当前分配给memcached创建一系列slab class,单个slab class中的chunk大小是一样的,而每个slab class中的chunk大小根据设置设置的chunk_size*growth_factor^(i-1),其中i表示第几个slab class(这里需要注意这里的chunk_size不只是item的数据大小,还包含memcached内部的一个item结构体大小,这个值一般是48byte,默认的growth