线程数

HBase调优

老子叫甜甜 提交于 2019-11-26 08:07:02
1、通用优化 1、NameNode的元数据备份使用SSD 2 、定时备份NameNode上的元数据,每小时或者每天备份,如果数据极其重要,可以5~ 10 分钟备份一次。备份可以通过定时任务复制元数据目录即可。 3、为NameNode指定多个元数据目录,使用 dfs .name.dir 或者 dfs.namenode.name.dir 指定。一个指定本地磁盘,一个指定网络磁盘。这样可以提供元数据的冗余和健壮性,以免发生故障。 4、设置dfs.namenode.name.dir.restore为true,允许尝试恢复之前失败的dfs.namenode.name.dir目录,在创建checkpoint时做此尝试,如果设置了多个磁盘,建议允许。 5、NameNode节点必须配置为RAID1(镜像盘)结构。 6、补充:什么是 Raid0、Raid0+1、Raid1、Raid5 Standalone 最普遍的单磁盘储存方式。 Cluster 集群储存是通过将数据分布到集群中各节点的存储方式,提供单一的使用接口与界面,使用户可以方便地对所有数据进行统一使用与管理。 Hot swap 用户可以再不关闭系统,不切断电源的情况下取出和更换硬盘,提高系统的恢复能力、拓展性和灵活性。 Raid0 Raid0是所有raid中存储性能最强的阵列形式。其工作原理就是在多个磁盘上分散存取连续的数据,这样

Tomcat虚拟主机和优化

北慕城南 提交于 2019-11-26 02:49:44
Tomcat虚拟主机配置 ■某些时候公司有多个项目同时运行时,一台服务器不建议运行多个Tomcat服务,需要配置虚拟主机 ■通过两个域名访问到不同的项目内容 ■步骤 1.创建www和bbs项目 目录和文件 2.修改Tomcat主配置文件 3.重启Tomcat服务 4.测试 Tomcat优化 Tomcat 的缺省配置并不适合生产环境,它会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要有三方面,分为操作系统优化(内核参数优化),Tomcat 配置文件参数优化,Java 虚拟机(JVM)调优。 Tomcat常用的优化相关参数 【maxThreads】Tomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最 大的线程数,默认值是 200。 【minSpareThreads】最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有 人使用也开这么多空线程等待,默认值是 10 【maxSpareThreads】最大备用线程数,一旦创建的线程超过这个值,Tomcat 就会关闭不 再需要的 socket 线程。默认值是-1(无限制)。一般不需要指定 【URIEncoding】指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它 Web 服务器软件配置方便,需要分别指定 【connnectionTimeout

Java线程池配置

余生颓废 提交于 2019-11-26 01:30:05
Android线程池来自Java的Executor接口,真正实现类是ThreadPoolExecutor。AsyncTask、OkHttp等中都涉及到线程池的配置因此线程池的配置十分重要。 ThreadPoolExecutor public ThreadPoolExecutor ( int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory) { this (corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, threadFactory, defaultHandler); } corePoolSize 线程池的核心线程数,默认情况下核心线程会一直存活,即使处于空闲状态。(当设置ThreadPoolExecutor的allowCoreThreadTimeOut为TRUE,核心线程也会设置超时策略,当等待新线程时间超过keepAliveTime,核心线程也会被停止) maximumPoolSize 线程池容纳的最大线程数(包括核心线程数在内) keepAliveTime 空闲线程存活时间

Java ThreadPoolExecutor线程池概述

柔情痞子 提交于 2019-11-26 01:27:50
导航 前言 为什么要使用线程池 线程池使用方式 Executors创建线程池 newCachedThreadPool newFixedThreadPool newScheduledThreadPool newSingleThreadExecutor 四种线程池对比 ThreadPoolExecutor创建线程池 排队策略 工作队列对比 线程池关闭 线程池大小设置 线程池的状态监控 结语 前言 在互联网的开发场景下,很多业务场景下我们需要使用到多线程的技术,从 Java 5 开始,Java 提供了自己的线程池,线程池就是一个线程的容器,每次只执行额定数量的线程。java.util.concurrent包中提供了ThreadPoolExecutor类来管理线程,本文将介绍一下ThreadPoolExecutor类的使用。 为什么要使用线程池? 在执行一个异步任务或并发任务时,往往是通过直接new Thread()方法来创建新的线程,这样做弊端较多,更好的解决方案是合理地利用线程池,线程池的优势很明显,如下: 降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗; 提高系统响应速度,当有任务到达时,无需等待新线程的创建便能立即执行; 方便线程并发数的管控,线程若是无限制的创建,不仅会额外消耗大量系统资源,更是占用过多资源而阻塞系统或oom等状况,从而降低系统的稳定性

记一次生产数据库&quot;意外&quot;重启的经历

强颜欢笑 提交于 2019-11-25 23:26:52
前言 在一个阳光明媚的下午,电脑右下角传来一片片邮件提醒,同时伴随着微信钉钉的震动,打开一看,应用各种出错,天兔告警,数据库服务器内存爆红,Mysql数据库实例挂掉了。 排查 先交代一下数据库版本: mysql> status -------------- mysql Ver 14.14 Distrib 5.7.22-22, for Linux (x86_64) using 6.2 Connection id: 59568 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 5.7.22-22-log Percona Server (GPL), Release 22, Revision f62d93c Protocol version: 10 崩溃故障排除绝不是一项有趣的任务,特别是如果MySQL没有报告崩溃的原因。例如,当MySQL内存不足时。 数据库邮件告警提醒发来的消息: Type: mysql Tags: 生产主库 Host: 172.16.1.66:3306 Level: critical Item: connect Value: down

Tomcat面试题

試著忘記壹切 提交于 2019-11-25 21:43:27
1、Tomcat的缺省端口是多少?怎么修改? 答:缺省端口是8080,若要修改,可以进入Tomcat的安装目录下找到conf目录下的server.xml文件,找到该文件中的Connector字段中的port。 2、Tomcat有哪几种connector运行模式(服务的请求方式)? 答:三种。修改它的运行模式需要在主配置文件中找到connector字段中的protocol进行修改。 这三种不同运行模式的性能相差很大,具体如下: BIO:阻塞型I/O操作,一个线程处理一个请求。缺点:并发量高时,线程数较多,浪费资源。Tomcat7或以下,默认使用这种方式。 NIO:基于缓冲区,能提供非阻塞I/O操作,和传统的BIO相比,具备更好的抗并发性能; APR(Apache portable run-time libraries):简单理解,就是从操作系统级别解决异步IO问题,大幅度的提高服务器的处理和相应性能,也是Tomcat运行高并发的首选模式,在Linux中需要安装APR动态库才可以使用这种模式。 3、如何避免用户在访问一个不存在的页面时,Tomcat将其详细版本信息返回给用户。 答:解决办法就是将404状态码进行重定向,以便我们自定义返回的页面信息。 4、优化tomcat可以从哪些方面着手? 答: 1、内存优化; 2、线程池的优化 3、禁用DNS查询; 4、开启日志切割功能; 5

面试官:来!聊聊线程池的实现原理以及使用时的问题

跟風遠走 提交于 2019-11-25 21:39:35
扫描下方二维码或者微信搜索公众号 菜鸟飞呀飞 ,即可关注微信公众号,阅读更多 Spring源码分析 和 Java并发编程 文章。 前言   无论是在工作中,还是在书本中,我们都可以听到或者看到关于线程在使用时的一些建议:不要在代码中自己直接创建线程,而是通过线程池的方式来使用线程。使用线程池的理由大致可以总结为以下几点。 1. 降低资源消耗。线程是操作系统十分宝贵的资源,当多个人同时开发一个项目时,在互不知情的情况下,都自己在代码中创建了线程,这样就会导致线程数过多,而且线程的创建和销毁,在操作系统层面,需要由 用户态切换到内核态 ,这是一个 费时费力 的过程。而使用线程池可以避免频繁的创建线程和销毁线程,线程池中线程可以重复使用。 2. 提高响应速度。当请求到达时,由于线程池中的线程已经创建好了,使用线程池,可以省去线程创建的这段时间。 3. 提高线程的可管理性。线程是稀缺资源,当创建过多的线程时,会造成系统性能的下降,而使用线程池,可以对线程进行统一分配、调优和监控。   线程池的使用十分简单,但是会用不代表用得好。在面试中,基本不会问线程池应该怎么用,而是问线程池在使用不当时会造成哪些问题,实际上就是考察线程池的实现原理。因此搞明白线程池的实现原理是很有必要的一件事,不仅仅对面试会有帮助,也会让我们在平时工作中避过好多坑。 实现原理   在线程池中存在几个概念:核心线程数

tomcat优化与虚拟主机

你。 提交于 2019-11-25 21:37:27
Tomcat虚拟主机配置 ■某些时候公司有多个项目同时运行时,一台服务器不建议运行多个Tomcat服务,需要配置虚拟主机 ■通过两个域名访问到不同的项目内容 ■步骤 1.创建www和bbs项目 目录和文件 2.修改Tomcat主配置文件 3.重启Tomcat服务 4.测试 Tomcat优化 Tomcat 的缺省配置并不适合生产环境,它会频繁出现假死现象需要重启,只有通过不断压测优化才能让它最高效率稳定的运行。优化主要有三方面,分为操作系统优化(内核参数优化),Tomcat 配置文件参数优化,Java 虚拟机(JVM)调优。 Tomcat常用的优化相关参数 【maxThreads】Tomcat 使用线程来处理接收的每个请求,这个值表示 Tomcat 可创建的最 大的线程数,默认值是 200。 【minSpareThreads】最小空闲线程数,Tomcat 启动时的初始化的线程数,表示即使没有 人使用也开这么多空线程等待,默认值是 10 【maxSpareThreads】最大备用线程数,一旦创建的线程超过这个值,Tomcat 就会关闭不 再需要的 socket 线程。默认值是-1(无限制)。一般不需要指定 【URIEncoding】指定 Tomcat 容器的 URL 编码格式,语言编码格式这块倒不如其它 Web 服务器软件配置方便,需要分别指定 【connnectionTimeout

java创建线程池

偶尔善良 提交于 2019-11-25 16:53:13
线程池 :是拿空间换时间的一种手段;JDK1.5以后加入java.util.concurrent包 线程池有了很大的改观 例如:用户提交一个请求任务 服务器执行这个任务需要通过三个阶段时间消耗,线程创建的时间,线程执行任务的时间以及销毁线程的时间;而线程池技术主要就是致力于减少线程创建与线程销毁的时间(拿空间换时间) 线程池的 作用 以及 原理 :可以根据系统环境 自动或手动设置线程数量 达到运行的最佳效果,少了浪费系统资源,多了造成拥挤效率不高 ( 每个线程占用内存大概再1M左右 ) ,当一个请求任务提交到服务以后 首先将其放入任务队列,如果此时线程池中有等待的工作线程则会去取任务队列最先进入的任务进行执行,每个 工作线程 可以被 重复利用 ;这样就可以达到一个控制系统执行线程数量的作用; 线程池中几个比较重要的类: Executor 执行线程的工具类 Executors 生成一些常用线程池的静态工厂 ExecutorService 真正的线程池接口 ScheduledExecutorService 能和Timer/TimerTask类似,解决那些需要任务重复执行的问题。 ThreadPoolExecutor ExecutorService的默认实现。 ScheduledThreadPoolExecutor