文章 78
评论 0
浏览 8357
6-Tomcat 性能优化

6-Tomcat 性能优化

6 Tomcat 性能优化 在目前流行的互联网架构中,Tomcat在目前的网络编程中是举足轻重的,由于Tomcat的运行依赖于JVM,从虚拟机的角度把Tomcat的调整分为外部环境调优 JVM 和 Tomcat 自身调优两部分 6.1 JVM组成 [15:53:34 root@tomcat1 tomcat]#java -version java version "1.8.0_281" Java(TM) SE Runtime Environment (build 1.8.0_281-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode) 6.1.1 JVM组成 JVM 组成部分 类加载子系统: 使用Java语言编写.java Source Code文件,通过javac编译成.class Byte Code文件。class loader类加载器将所需所有类加载到内存,必要时将类实例化成实例 运行时数据区: 最消耗内存的空间,需要优化 执行引擎: 包括JIT (JustInTimeCompiler)即时....

5-session 共享服务器

5-session 共享服务器

5 session 共享服务器 5.1 msm 介绍 msm(memcached session manager)提供将Tomcat的session保持到memcached或redis的程序,可以实现高可用。 项目早期托管在google code,目前在Github github网站链接: https://github.com/magro/memcached-session-manager 支持Tomcat的 6.x、7.x、8.x、9.x Tomcat的Session管理类,Tomcat版本不同 memcached-session-manager-2.3.2.jar memcached-session-manager-tc8-2.3.2.jar Session数据的序列化、反序列化类 官方推荐kyro 在webapp中WEB-INF/lib/下 驱动类 memcached(spymemcached.jar) Redis(jedis.jar) 5.2 安装 参考链接: https://github.com/magro/memcached-session-mana....

4-Memcached

4-Memcached

4 Memcached 4.1 NoSQL介绍 NoSQL是对 Not Only SQL、非传统关系型数据库的统称。 NoSQL一词诞生于1998年,2009年这个词汇被再次提出指非关系型、分布式、不提供ACID的数据库设计模式。 随着互联网时代的到来,数据爆发式增长,数据库技术发展日新月异,要适应新的业务需求。 而随着移动互联网、物联网的到来,大数据的技术中NoSQL也同样重要。 数据库排名:https://db-engines.com/en/ranking NoSQL 分类 Key-value Store k/v数据库 性能好 O(1) , 如: redis、memcached Document Store 文档数据库 mongodb、CouchDB Column Store 列存数据库,Column-Oriented DB HBase、Cassandra,大数据领域应用广泛 Graph DB 图数据库 Neo4j Time Series 时序数据库 InfluxDB、Prometheus 4.2 Memcached Memcached 只支持能序....

3-tomcat会话(session)复制集群

3-tomcat会话(session)复制集群

3 Tomcat Session Replication Cluster Tomcat 官方实现了 Session 的复制集群,将每个Tomcat的Session进行相互的复制同步,从而保证所有Tomcat都有相同的Session信息. 3.1 配置说明 官方文档:https://tomcat.apache.org/tomcat-8.5-doc/cluster-howto.html <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel".....

2-结合反向代理部署tomcat

2-结合反向代理部署tomcat

2 结合反向代理实现tomcat部署 2.1 常见部署方式介绍 standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。 反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat LNMT:Linux + Nginx + MySQL + Tomcat LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat 前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更适合 LNMT:Linux + Nginx + MySQL + Tomcat 多级代理 LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat 2.2 利用 nginx 反向代理实现全部转发置指定同一个虚拟主机 2.2.1 配置说明 利用nginx反向代理功能,实现 4.1 图(2)的代理功能,将用户请求全部转发至指定的同一个tomcat主机 利用nginx指令proxy_pass 可以向后端服务器转发请求报....

1-Tomcat 基础功能

1-Tomcat 基础功能

1 Tomcat 基础功能 1.1 JDK 1.1.1 JDK和JRE Java SE API: Java 基础类库开发接口 JRE:Java Runtime Environment缩写,指Java运行时环境, 包含 JVM + Java核心类库 JDK:Java Development Kit,即 Java 语言的软件开发工具包,JDK协议基于 JRL(JavaResearchLicense)协议 1.1.2 Oracle JDK版本 收费 从2019年1月份开始,Oracle JDK 开始对 Java SE 8 之后的版本开始进行商用收费,确切的说是8u201/202 之后的版本。如果你用 Java 开发的功能如果是用作商业用途的,如果还不想花钱购买的话,能免费使用的最新版本是 8u201/202。当然如果是个人客户端或者个人开发者可以免费试用Oracle JDK 所有的版本。 发版方式 在 JDK 9 发布之前,Oracle 的发版策略是以特性驱动的,只有重大的特性改变才会发布大版本,比如JDK 7 到 JDK 8,中间会发多个更新版本。而从 JDK 9 开始变为以时间驱动的......

2-LVS实例

2-LVS实例

4 LVS实战案例 4.1 LVS-NAT模式案例 共四台主机 一台: internet client:172.16.10.100/24 GW:无 仅主机 一台:lvs eth1 仅主机 172.16.10.81/24 eth0 NAT 192.168.10.81/24 两台RS: RS1: 192.168.10.71/24 GW:192.168.10.81 NAT RS2: 192.168.10.71/24 GW:192.168.10.81 NAT 配置过程: #网络环境自行配置 [11:41:42 root@sr1 ~]#curl 127.0.0.1 sr1.zhanzghuo.org [11:41:45 root@sr2 ~]#curl 127.0.0.1 sr2.zhanzghuo.org [11:42:48 root@lvs ~]#cat /etc/sysctl.conf net.ipv4.ip_forward=1 [11:45:10 root@lvs ~]#sysctl -p #添加集群调度算法加权轮询wrr [11:44:36 root@lvs ~]#ipvsadm ......

1-LVS基础

1-LVS基础

1 Linux Virtual Server简介 1.1 LVS介绍 LVS:Linux Virtual Server,负载调度器,内核集成,章文嵩(花名 正明), 阿里的四层SLB(ServerLoad Balance)是基于LVS+keepalived实现 LVS是全球最流行的四层负载均衡开源软件,由章文嵩博士(当前阿里云产品技术负责人)在1998年5月创立,可以实现LINUX平台下的负载均衡。 LVS 官网:http://www.linuxvirtualserver.org/ 阿里SLB和LVS: https://yq.aliyun.com/articles/1803 https://github.com/alibaba/LVS 1.2 LVS工作原理 VS根据请求报文的目标IP和目标协议及端口将其调度转发至某RS,根据调度算法来挑选RS。LVS是内核级功能,工作在INPUT链的位置,将发往INPUT的流量进行“处理” 范例:查看内核支持LVS [20:27:28 root@centos8 ~]#grep -i ipvs /boot/config-4.18.0-193.el8......

数据同步自动化实现脚本-sersync

数据同步自动化实现脚本-sersync

1 rsyncd服务端方式实现 1.1 存放备份数据执行的脚本 #!/bin/bash # #******************************************************************** #Author:zhangzhuo #QQ: 1191400158 #Date: 2021-03-11 #FileName:install_backup_rsyncd.sh #URL: https://www.zhangzhuo.ltd #Description:The test script #Copyright (C): 2021 All rights reserved #******************************************************************** #验证用户名 USER='zz' #用户密码 PASS='123456' #备份目录 DIR='/data/backup' rpm -q rsync-daemon &>/dev/null || yum install -y rsync-....

4-数据的实时同步

4-数据的实时同步

4 数据的实时同步 在生产环境,有时会需要两台主机的特定目录实现实时同步。比如,将NFS共享目录的数据文件,自动实时同步到备份服务器特定目录中 4.1 实时同步技术介绍 实现实时同步的方法 inotify + rsync 方式实现数据同步 sersync :前金山公司周洋(花椒直播)在 inotify 软件基础上进行开发的,功能更加强大 工作原理: 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 inotify: 异步的文件系统事件监控机制,利用事件驱动机制,而无须通过诸如cron等的轮询机制来获取事件,linux内核从2.6.13起支持 inotify,通过inotify可以监控文件系统中添加、删除,修改、移动等各种事件 [13:31:06 root@centos8 ~]#grep -i inotify /boot/config-4.18.0-193.el8.x86_64 CONFIG_INOTIFY_USER=y 实现inotify软件: inotify-tools sersync ....

3-SAMBA 服务

3-SAMBA 服务

3 SAMBA 服务 3.1 SAMBA 服务简介 SMB:Server Message Block 服务器消息块,IBM发布,最早是DOS网络文件共享协议,是私有协议 CIFS:common internet file system,微软基于SMB发布 SAMBA:1991年Andrew Tridgell,实现 windows和UNIX相通 官方网站:http://www.samba.org/ SAMBA的功能: 共享文件和打印,实现在线编辑 实现登录SAMBA用户的身份认证 可以进行NetBIOS名称解析 外围设备共享 Windows计算机网络管理模式: 工作组WORKGROUP:计算机对等关系,帐号信息各自管理 域DOMAIN:C/S结构,帐号信息集中管理,DC,AD 3.2 SAMBA 软件介绍 相关包: samba 提供smb服务器端 samba-client 客户端软件 samba-common 通用软件 cifs-utils smb 客户端工具 samba-winbind 和AD相关 相关服务进程: smbd 提供smb(cifs)服务 TCP:139,44....

2-NFS服务

2-NFS服务

2 NFS 服务 2.1 NFS工作原理 NFS:Network File System 网络文件系统,基于内核的文件系统。Sun 公司开发,通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure CallProtocol 远程过程调用)实现 RPC采用C/S模式,客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行 NFS优势:节省本地存储空间,将常用的数据,如:/home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用 2.2 NFS软件介绍 软件包: nfs-utils(包括服务器和客户端相关工具,CentOS8 最小化安装时默认没有安装) 相关软件包: rpcbind(必须),tcp_wrappers Kernel支持: nfs.ko 端口: 2049......

1-FTP 文件传输协议

1-FTP 文件传输协议

1 FTP 文件传输协议 1.1 FTP工作原理介绍 文件传输协议:File Transfer Protocol 早期的三个应用级协议之一,基于C/S结构 数据传输格式:二进制(默认)和文本 双通道协议:命令和数据连接 两种模式:从服务器角度 主动(PORT style):服务器主动连接 命令(控制):客户端:随机port ---> 服务器:21/tcp 数据:客户端:随机port <---服务器:20/tcp 被动(PASV style):客户端主动连接 命令(控制):客户端:随机port ---> 服务器:21/tcp 数据:客户端:随机port ---> 服务器:随机port /tcp 范例:服务器被动模式数据端口 227 Entering Passive Mode (172,16,0,1,224,59) 服务器数据端口为:224*256+59 范例: windows 连接FTP服务器默认使用主动模式 C:\Users\zhangzhuo>ftp 192.168.10.81 连接到 192.168.10.81。 220 (vsFTP....

1-系统日志管理-rsyslog

1-系统日志管理-rsyslog

1 系统日志管理 1.1 系统日志介绍 将系统和应用发生的事件记录至日志中,以助于排错和分析使用: 日志记录的内容包括: 历史事件:时间,地点,人物,事件 日志级别:事件的关键性程度,Loglevel 1.1.1 sysklogd 系统日志服务 CentOS 5 之前版本采用的日志管理系统服务 syslogd: system application 记录应用日志 klogd: linux kernel 记录内核日志 事件记录格式: 日期时间 主机 进程[pid]: 事件内容 C/S架构:通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理 1.1.2 rsyslog 系统日志服务 rsyslog是CentOS 6 以后版本的系统管理服务.它提供了高性能,出色的安全性和模块化设计。 尽管rsyslog最初是常规的syslogd,但已发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。 当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。 即使在远程的目的地和更精细的处理中,性能....

11-MySQL优化及其他

11-MySQL优化及其他

7 性能优化 数据库服务衡量指标: Qps:query per second Tps:transaction per second 7.1 压力测试工具 7.1.1 常见 MySQL 压力测试工具 mysqlslap Sysbench:功能强大,官网: https://github.com/akopytov/sysbench tpcc-mysql MySQL Benchmark Suite MySQL super-smack MyBench 7.1.2 mysqlslap mysqlslap:来自于mariadb包,测试的过程默认生成一个mysqlslap的schema,生成测试表t1,查询和插入测试数据,mysqlslap库自动生成,如果已经存在则先删除。用--only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹 使用格式: mysqlslap [options] 常用参数 [options] 说明: --auto-generate-sql, -a #自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力 --auto....

10-MySQL 高可用

10-MySQL 高可用

6.3 MySQL 高可用 6.3.1 MySQL 高可用解决方案 MySQL官方和社区里推出了很多高可用的解决方案,大体如下,仅供参考(数据引用自Percona) MMM: Multi-Master Replication Manager for MySQL,Mysql主主复制管理器是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql MasterMaster复制的配置(同一时间只有一个节点是可写的) 官网: http://www.mysql-mmm.org https://code.google.com/archive/p/mysql-master-master/downloads MHA:Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用....

9-MySQL集群架构-读写分离

9-MySQL集群架构-读写分离

6.2 MySQL 中间件代理服务器 6.2.1 关系型数据库和 NoSQL 数据库 数据库主要分为两大类:关系型数据库与 NoSQL 数据库。 关系型数据库,是建立在关系模型基础上的数据库,其借助于集合代数等数学概念和方法来处理数据库中的数据。主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库。 NoSQL 数据库,全称为 Not Only SQL,意思就是适用关系型数据库的时候就使用关系型数据库,不适用的时候也没有必要非使用关系型数据库不可,可以考虑使用更加合适的数据存储。主要分为临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase),每种 NoSQL 都有其特有的使用场景及优点。 Oracle,mysql 等传统的关系数据库非常成熟并且已大规模商用,为什么还要用 NoSQL 数据库呢?主要是由于随着互联网发展,数据量越来越大,对性能要求越来越高,传统数据库存在着先天性的缺陷,即单机(单库)性能瓶颈,并且....

8- MySQL 集群-主从复制

8- MySQL 集群-主从复制

6 MySQL 集群 Cluster 服务性能扩展方式 Scale Up,向上扩展,垂直扩展 Scale Out,向外扩展,横向扩展 6.1 MySQL 主从复制 6.1.1 主从复制架构和原理 6.1.1.1 MySQL的主从复制 读写分离 复制:每个节点都有相同的数据集,向外扩展,基于二进制日志的单向复制 6.1.1.2 复制的功用 负载均衡读操作 备份 高可用和故障切换 数据分布 MySQL升级 6.1.1.3 复制架构 一主一从复制架构 一主多从复制架构 6.1.1.4 主从复制原理 主从复制相关线程 主节点 dump Thread:为每个Slave的I/O Thread启动一个dump线程,用于向其发送binary log events 从节点 I/O Thread:向Master请求二进制日志事件,并保存于中继日志中 SQL Thread:从中继日志中读取日志事件,在本地完成重放 跟复制功能相关的文件: master.info:用于保存slave连接至master时的相关信息,例如账号、密码、服务器地址等 relay-log.info:保....

7-MySQL备份和恢复

7-MySQL备份和恢复

5 备份和恢复 5.1 备份恢复概述 5.1.1 为什么要备份 灾难恢复:硬件故障、软件故障、自然灾害、黑客攻击、误操作测试等数据丢失场景 5.1.2 备份类型 完全备份,部分备份 完全备份:整个数据集 部分备份:只备份数据子集,如部分库或表 完全备份、增量备份、差异备份 增量备份:仅备份最近一次完全备份或增量备份(如果存在增量)以来变化的数据,备份较快,还原复杂 差异备份:仅备份最近一次完全备份以来变化的数据,备份较慢,还原简单 注意:二进制日志文件不应该与数据文件放在同一磁盘 冷、温、热备份 冷备:读、写操作均不可进行,数据库停止服务 温备:读操作可执行;但写操作不可执行 热备:读、写操作均可执行 MyISAM:温备,不支持热备 InnoDB:都支持 物理和逻辑备份 物理备份:直接复制数据文件进行备份,与存储引擎有关,占用较多的空间,速度快 逻辑备份:从数据库中"导出"数据另存而进行的备份,与存储引擎无关,占用空间少,速度慢,可能丢失精度 5.1.3 备份什么 数据 二进制日志、InnoDB的事务日志 用户帐号,权限设置,程序代码(存储过....

6-MySQL架构和性能优化(重点)

6-MySQL架构和性能优化(重点)

4 MySQL 架构和性能优化 4.1 MySQL架构 MySQL是C/S 架构的 4.1.1 connectors(连接器) 可供Native C API、JDBC、ODBC、NET、PHP、Perl、Python、Ruby、Cobol 等连接mysql;ODBC叫开放数据库(系统)互联,open database connection;JDBC是主要用于java语言利用较为底层的驱动连接数据库;以上这些,站在编程角度可以理解为连入数据库管理系统的驱动,站在mysql角度称作专用语言对应的链接器.任何链接器连入mysql以后,mysql是单进程多线程模型的,因此,每个用户连接,都会创建一个单独的连接线程;其实mysql连接也有长短连接两种方式,使用mysql客户端连入数据库后,直到使用quit命令才退出,可认为是长连接;使用mysql中的-e选项,在mysql客户端向服务器端申请运行一个命令后则立即退出,也就意味着连接会立即断开;所以,mysql也支持长短连接类似于两种类型;所以,用户连入mysql后,创建一个连接线程,完成之后,能够通过这个链接线程完成接收客户端发来的请求,为其处.....

生而为人