cpu参数

Java调优经验谈

匿名 (未验证) 提交于 2019-12-02 21:53:52
对于调优这个事情来说,一般就是三个过程: 性能监控:问题没有发生,你并不知道你需要调优什么?此时需要一些系统、应用的监控工具来发现问题。 性能分析:问题已经发生,但是你并不知道问题到底出在哪里。此时就需要使用工具、经验对系统、应用进行瓶颈分析,以求定位到问题原因。 性能调优:经过上一步的分析定位到了问题所在,需要对问题进行解决,使用代码、配置等手段进行优化。 Java调优也不外乎这三步。 此外,本文所讲的性能分析、调优等是抛开以下因素的: 系统底层环境:硬件、操作系统等 数据结构和算法的使用 外部系统如数据库、缓存的使用 调优准备 调优是需要做好准备工作的,毕竟每一个应用的业务目标都不尽相同,性能瓶颈也不会总在同一个点上。在业务应用层面,我们需要: 需要了解系统的总体架构,明确压力方向。比如系统的哪一个接口、模块是使用率最高的,面临高并发的挑战。 需要构建测试环境来测试应用的性能,使用ab、loadrunner、jmeter都可以。 对关键业务数据量进行分析,这里主要指的是对一些数据的量化分析,如数据库一天的数据量有多少;缓存的数据量有多大等 了解系统的响应速度、吞吐量、TPS、QPS等指标需求,比如秒杀系统对响应速度和QPS的要求是非常高的。 了解系统相关软件的版本、模式和参数等,有时候限于应用依赖服务的版本、模式等,性能也会受到一定的影响。 此外

Java多线程一篇就够了

匿名 (未验证) 提交于 2019-12-02 21:40:30
版权声明:欢迎个人转载,但须在文章页面明显位置给出原文连接; 未经作者同意必须保留此段声明、不得随意修改原文、不得用于商业用途,否则保留追究法律责任的权利。 https://blog.csdn.net/sinat_35757488/article/details/90767196 JAVA 线程实现/创建方式 继承Thread类 public class MyThread extends Thread { public void run ( ) { System . out . println ( "MyThread.run()" ) ; } } MyThread myThread1 = new MyThread ( ) ; myThread1 . start ( ) ; 实现Runnable接口 public class MyThread extends OtherClass implements Runnable { public void run ( ) { System . out . println ( "MyThread.run()" ) ; } } //启动 MyThread,需要首先实例化一个 Thread,并传入自己的 MyThread 实例: MyThread myThread = new MyThread ( ) ; Thread thread = new

Linux基础巩固--Day1

Deadly 提交于 2019-12-02 21:22:57
操作系统   OS:     Operating System,通用目的的软件程序       硬件驱动       进程管理       内存管理       网络管理       安全管理       文件管理     OS分类:       服务器OS:RHEL,CentOS,Windows Server,AIX       桌面OS:Windows 10,Mac OS,Fedora       移动设备OS: Andriod, IOS, YunOS   开发接口标准      ABI : Application Binary Interface       ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改动就能运行      API: Application Programming Interface       API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译      POSIX: Portable Operating System Interface       IEEE在操作系统上定义的一系列API标准       POSIX兼容的程序可在其它POSIX操作系统编译执行      运行程序格式 :       Windows:EXE,.dll,.lib       Linux:ELF,

线程池参数设置

雨燕双飞 提交于 2019-12-02 19:47:31
在如今的多核处理器时代,多线程技术发挥着巨大的作用,尤其对于大批量处理同类型IO密集型的任务,例如全库全表查找数据时,多线程是提升速度和性能的利器。 近期发布的另一篇文章已经详细介绍了线程池的技术原理。但平时的开发工作中,我们可能更加关注的是线程池的使用,线程数设置多大啊?队列大小设置多大啊,等问题。 这篇文章主要是针对前段时间对线程池的使用过程中,总结了几点参数设置方面的建议,希望对大家有用。 使用多线程时,会面临 线程数,队列大小( corePoolSize maxPoolSize queueCapacity ) 三个重要参数的大小设置问题。 我根据自己前期的工作总结发现参数设置主要考虑下面几个方面: 1. 线程池中执行的任务性质 。 计算密集型的任务比较占cpu,所以一般线程数设置的大小 等于或者略微大于 cpu的核数;但IO型任务主要时间消耗在 IO等待上,cpu压力并不大,所以线程数一般设置较大,例如 多线程访问数据库,数据库有128个表,可能就直接考虑使用128个线程。 2. CPU使用率 。 当线程数设置较大时,会有如下几个问题: 第一 ,线程的初始化,切换,销毁等操作会消耗不小的cpu资源,使得cpu利用率一直维持在较高水平。 第二 ,线程数较大时,任务会短时间迅速执行,任务的集中执行也会给cpu造成较大的压力。 第三 , 任务的集中支持

论如何优雅的自定义ThreadPoolExecutor线程池

a 夏天 提交于 2019-12-02 19:41:36
本文首发自我的博客园: https://www.cnblogs.com/wang-meng/p/10163855.html 前言 线程池想必大家也都用过,JDK的 Executors 也自带一些线程池。但是不知道大家有没有想过,如何才是最优雅的方式去使用过线程池吗? 生产环境要怎么去配置自己的线程池才是合理的呢? 今天周末,刚好有时间来总结一下自己所认为的’优雅’, 如有问题欢迎大家指正。 线程池使用规则 要使用好线程池,那么一定要遵循几个规则: 线程个数大小的设置 线程池相关参数配置 利用Hook嵌入你的行为 线程池的关闭 线程池配置相关 线程池大小的设置 这其实是一个面试的考点,很多面试官会问你线程池coreSize 的大小来考察你对于线程池的理解。 首先针对于这个问题,我们必须要明确我们的需求是计算密集型还是IO密集型,只有了解了这一点,我们才能更好的去设置线程池的数量进行限制。 1、计算密集型: 顾名思义就是应用需要非常多的CPU计算资源,在多核CPU时代,我们要让每一个CPU核心都参与计算,将CPU的性能充分利用起来,这样才算是没有浪费服务器配置,如果在非常好的服务器配置上还运行着单线程程序那将是多么重大的浪费。对于计算密集型的应用,完全是靠CPU的核数来工作,所以为了让它的优势完全发挥出来,避免过多的线程上下文切换,比较理想方案是: 线程数 = CPU核数+1

8核、6核、4核、双核CPU是什么意思

那年仲夏 提交于 2019-12-02 19:06:58
对于初学者来说,CPU是什么、什么是双核、4核、6核、8核等。下面,就以上的问题,我们做出一一解答。 概念:CPU是什么、做什么用、一般CPU是接在哪里的,我们先来看看CPU是什么,CPU既中央处理器、电脑中一个最重要,最核心的东西,市面上能买到的CPU只有两种,一种是INTEL公司生产的,另一种是AMD公司生产的。如图1-1: 上图分别是INTEL和AMD公司两个厂家生产的CPU,CPU主要的工作就是处理和运算数据,所以,CPU运算速度、主频、缓存、核心数,这几个参数就决定了CPU的好坏,CPU的主频越高、缓存越大、核心数越多,这样的CPU运转速度就很快,处理图形图像文件起来,速度就越快,这种CPU的价格就比较贵,下面,我找两款CPU对比来说说他们的好坏。如图1-2: 我们来看看INTEL的CPU G2020和E3-1230这两款CPU的参数对比一下,G2020的主频:2.9G、缓存是一级缓存:128KB、二级缓存:512KB、三级缓存:3MB,核心数:2个,线程数:2个。我们在来看看E3-1230,E3-1230的主频:3.2G、缓存是一级缓存:256KB、二级缓存:1MB、三级缓存:8MB,核心数:4个,线程数:8个。从这两个CPU的参数来看,我们很明显的能够看出来,E3-1230的CPU比G2020的CPU要好很多,那么E3-1230这个CPU安装在我们的电脑上面

深入理解线程和线程池(图文详解)

若如初见. 提交于 2019-12-02 18:16:14
关于线程和线程池的学习,我们可以从以下几个方面入手: 第一,什么是线程,线程和进程的区别是什么 第二,线程中的基本概念,线程的生命周期 第三,单线程和多线程 第四,线程池的原理解析 第五,常见的几种线程池的特点以及各自的应用场景 一、 线程,程序执行流的最小执行单位,是行程中的实际运作单位,经常容易和进程这个概念混淆。那么,线程和进程究竟有什么区别呢?首先,进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程,而线程,是运行中的实际的任务执行者。可以说,进程中包含了多个可以同时运行的线程。 二、 线程的生命周期,线程的生命周期可以利用以下的图解来更好的理解: 第一步,是用new Thread()的方法新建一个线程,在线程创建完成之后,线程就进入了就绪(Runnable)状态,此时创建出来的线程进入抢占CPU资源的状态,当线程抢到了CPU的执行权之后,线程就进入了运行状态(Running),当该线程的任务执行完成之后或者是非常态的调用的stop()方法之后,线程就进入了死亡状态。而我们在图解中可以看出,线程还具有一个则色的过程,这是怎么回事呢?当面对以下几种情况的时候,容易造成线程阻塞,第一种,当线程主动调用了sleep()方法时,线程会进入则阻塞状态,除此之外,当线程中主动调用了阻塞时的IO方法时,这个方法有一个返回参数,当参数返回之前

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 转至元数据结尾

不打扰是莪最后的温柔 提交于 2019-12-02 18:16:06
OutOfMemoryError,内存不足 内存容量 螺纹死锁 锁争用(锁争用) Java进程消耗CPU过高 A,jps(Java虚拟机进程状态工具) jps主要用于输出JVM中运行的进程状态信息。语法格式如下: jps [选项] [主机ID] 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下: -q不输出类名,Jar名和纳入主方法的参数 -m输出预设主方法的参数 -l输出main类或Jar的全限名 -v输出JVM的参数 例如下面: root @ ubuntu:/#jps -m -l 2458 org.artifactory.standalone.main.Main /usr/local/artifactory-2.2.5/etc/jetty.xml 29920 com.sun.tools.hat.Main主端口9998 /tmp/dump.dat 3149 org.apache.catalina.startup.Bootstrap启动 30972 sun.tools.jps.Jps -m -l 8247 org.apache.catalina.startup.Bootstrap启动 25687 com.sun.tools.hat.Main-端口9999 dump.dat 21711 mrf-center.jar B,jstack

Python3 多线程编程

别说谁变了你拦得住时间么 提交于 2019-12-02 17:16:56
一、线程的基本概念 引入进程的目的,是为了使多道程序并发执行,以提高资源利用率和系统吞吐量;而引入线程,则是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。 线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。 引入线程后,进程的内涵发生了改变,进程只作为除CPU以外系统资源的分配单元,线程则作为处理机的分配单元。 二、线程与进程的比较 调度。在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。 拥有资源。不论是传统操作系统还是设有线程的操作系统,进程都是拥有资源的基本单位,而线程不拥有系统资源(也有一点必不可少的资源)

计算机基础2

余生长醉 提交于 2019-12-02 16:47:22
python是编程语言 语言 一种事物与另外一种事物沟通的介质 所以说编程语言是程序员与计算机沟通的介质 什么是编程: 就是程序员用计算机所能理解的表达方式(编程语言)把自己的思维逻辑写下来,编程的结果就是一堆文件 什么要编程? 或者说为什么要和计算机沟通,让计算机按照人的逻辑执行程序,取代并解放人力 完整的计算机系统 3层结构 应用程序 (不能直接操作硬件,如果要操作硬件,需要向操作系统层发出请求) 操作系统 (往上服务于应用软件,往下控制硬件) 计算机硬件 五大组成 控制器:统筹规划硬件与软件的运行,调控计算机各组成部分协调合作 运算器:可以完成数据的 算数运算 与 逻辑运算,得到想要的结果 存储器:需要再次使用的数据可以通过存储器进行 临时 或 永久存储 - 内存: 基于电工作,通电能存数据,断电数据消失 - 外存: 外部存储(硬盘),永久保存数据 输入input设备:将外界的信息,通过输入设备,提供给计算机 输出output设备:从计算机内部提前想要的数据 数据的处理流程 数据先通过输入设备到内存,然后CPU从内存里取出数据在进行处理,最后处理完的数据给到内存,内存给到输出设备显示 计算机三大核心 cpu: 中央 控制器 + 运算器 内存:临时存储数据,断电后消失 硬盘:永久存储数据,断电后还拥有 CPU 控制器+运算器=CPU 功能: 控制+运算 工作方式: 取值---