阿里云云主机添加swap分区与swap性能优化

swap的功能与相应内核参数 Linux 将物理内存分为内存段的部分被称作“页面”。交换是指内存页面被复制到预先设定好的硬盘空间(叫做交换空间)的过程,目的是释放用于页面的内存。物理内存和交换空间的总大小是可用的虚拟内存的总量。交换空间通常是一个磁盘分区(此分区在安装操作系统时,系统通常会默认划分出一段空间用于交换分区,默认将交换空间的大小设定为内存的1倍到2倍),也可以是一个文件。 内核参数中有一个vm.swappiness参数,此参数代表了内核对于交换空间的喜好(或厌恶)程度。Swappiness 可以有 0 到 100 的值,默认的大小通常是60,但也有的是30。设置这个参数为较低的值会减少内存的交换,从而提升一些系统上的响应度。如果内存较为充裕,则可以将vm.swappiness大小设定为30,如果内存较少,可以设定为60。如果将此数值调整的过大,可能损失内存本来能提供的性能,并增加磁盘IO消耗和CPU的消耗。 关于阿里云云主机swap功能 阿里云提供的云服务器(Elastic Compute Service,简称 ECS),是云主机的一种,当前采用的虚拟化驱动是Xen(这一点可以通过bios vendor和virtual type可以看出)。 默认情况下,阿里云云主机的swap功能是没有启用的,原因当然是通过取消swap功能可以降低磁盘IO的占用率来让用户购买更多的内存、提高磁盘寿命和性能。 阿里当前的做法是: 1.不创建swap分区,由镜像决定 2.将vm.swappiness设定为0,即永不使用swap分区 启用swap分区,确实可以降低内存的使用压力,但并不是长久之计,如果云主机上运行的应用确实需要较高的内存,建议还是购买更多的内存。 如何启用swap分区? 步骤如下: 1.查看当前系统中是否已经启用swap分区 1 2 cat /proc/swaps top 2.如果没有启用swap分区功能,则新建一个专门的文件用于swap分区…

【Linux】Linux统计文件夹、文件数量的命令

# 查看当前目录下的文件数量(不包含子目录中的文件) ls -l|grep "^-"| wc -l # 查看当前目录下的文件数量(包含子目录中的文件) 注意:R,代表子目录 ls -lR|grep "^-"| wc -l # 查看当前目录下的文件夹目录个数(不包含子目录中的目录),同上述理,如果需要查看子目录的,加上R ls -l|grep "^d"| wc -l # 查询当前路径下的指定前缀名的目录下的所有文件数量 # 例如:统计所有以“20161124”开头的目录下的全部文件数量 ls -lR 20161124*/|grep "^-"|…

kubernetes—CentOS7安装kubernetes1.11.2图文完整版

转载请注明出处:kubernetes—CentOS7安装kubernetes1.11.2图文完整版 架构规划 k8s至少需要一个master和一个node才能组成一个可用集群。 本章我们搭建一个master节点和三个node节点。 我们在生产环境中使用时k8s时可以适当增加节点。 我们有三台服务器,ip和身份规划如下: 192.168.11.90 master node 192.168.11.91 node 192.168.11.92 node 192.168.11.90即作master节点又作node节点。 三台服务器都是CentOS7系统。 注意:Kubernetes 几乎所有的安装组件和 Docker 镜像都放在 goolge 自己的网站上,这对国内的同学可能是个不小的障碍。建议是:网络障碍都必须想办法克服,不然连 Kubernetes 的门都进不了。 设置主机名 分别使用hostname命令把主机名称设置为k8s,k8s1,k8s2 hostname k8s hostname k8s1 hostname…

Linux系统通过fail2ban对暴力破解进行防护

摘要: 暴力破解攻击是指攻击者通过系统地组合所有可能性(例如登录时用到的账户名、密码),尝试所有的可能性破解用户的账户名、密码等敏感信息。攻击者会经常使用自动化脚本工具组合出正确的用户名和密码。 针对这种攻击除了常规性的调整服务器的设置账号密码的复杂度,以及调整默认端口外等方式提升攻击难度外,还可以通过开源工具fail2ban来进行设置防护规则来提高防护能力。 暴力破解攻击是指攻击者通过系统地组合所有可能性(例如登录时用到的账户名、密码),尝试所有的可能性破解用户的账户名、密码等敏感信息。攻击者会经常使用自动化脚本工具组合出正确的用户名和密码。 针对这种攻击除了常规性的调整服务器的设置账号密码的复杂度,以及调整默认端口外等方式提升攻击难度外,还可以通过开源工具fail2ban来进行设置防护规则来提高防护能力。 首先简单说一下服务器的基础防护设置 1、密码要满足复杂性要求 a.密码长度要求8位以上,最好是14位以上 b.密码要求至少包含大小写字母、数字和特殊符号四种字符中的三种以上 2、修改ssh程序默认的远程端口号 这一点可以通过调整 /etc/ssh/sshd_config 文件中的Port 参数来实现 修改了端口号之后远程工具进行连接时需要指定端口号才可以正常连接,通过ssh命令连接时需要通过-p参数指定端口号 3、修改默认的管理员账号 a.先对默认的root账号进行禁用(注意:阿里云控制台上的密码重置功能只对默认的root账号生效,如果做了此操作后后期是不能使用阿里云控制台的密码重置功能的),禁用方法直接修改root用户的登陆shell为 /sbin/nologin 即可。 b.创建新的用户名,作为管理员账号,Linux系统判定管理员账号的方法是可以通过UID实现的,默认UID为0的用户是管理员,所以只需要创建用户后,在passwd文件中把用户UID改为0即可 创建用户,并设置密码,以及最终的修改效果,可以参考下图,通过id命令查询结果可以看到新建的用户权限是root权限 通过上述方式的设置,是可以提升服务器针对暴力破解的防护能力的,设置之后基本上黑客想要暴力成功是很困难的。 但是如果暴力破解的情况很严重,虽然经过上述设置后,黑客很难暴力破解成功,但是由于暴力破解时服务器需要不断的对用户登录进行认证,也会导致服务器产生很多额外的开销,进而影响服务器的资源负载状况。 针对这种情况,可以考虑通过开源工具fail2ban监视日志情况将满足动作的相关IP利用iptables加入到dorp列表一定时间。 注意:这种方法如果手动重启了iptables服务的话,所有的drop规则会失效。 1、到fail2ban官网下载程序源码包 官网地址http://www.fail2ban.org 由于是海外站点,所以下载速度上可能比较慢,本文中通过稳定版fail2ban-0.8.14做演示,具体的下载地址 https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.8.14 2、下载好的程序是源码包的形式,需要手动进行编译安装…

经验分享之在CentOS 7上搭建SVN服务器

安装步骤 这一系列的操作将在软件Xshell中进行。 1、下载安装SVN版本 yum install subversion 2、查看安装版本 svnserve –version 3、创建SVN版本库目录 mkdir -p /var/svn/svnrepos 4、创建版本库 svnadmin create /var/svn/svnrepos 执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件:conf db format hooks locks README.txt 5、进入conf目录(进行版本库配置) cd conf authz:文件是权限控制文件 passwd:是帐号密码文件 svnserve.conf :SVN服务配置文件…

CentOS 7 安装中文字体

JAVA画图时常用到Font 类对象 这样的对象依赖于本地的字段。新装的linux没有安装字段库,和相应的字体。 1、fc-list 查看字体库 发现没有安装 2、yum -y install fontconfig 安装 3、安装好后/usr/share目录下多两个目录 fonts 和 fontconfig 4、首先在 /usr/share/fonts 目录下新建一个目录 chinese 5、到C:\Windows\Fonts目录下上传你需要的字体到 /usr/share/fonts/chinese 目录下 6、修改chinese权限 chmod -R 755 /usr/share/fonts/chinese 7、接下来需要安装ttmkfdir来搜索目录中所有的字体信息,并汇总生成fonts.scale文件,输入命令: yum -y…

java jvm 参数 -Xms -Xmx -Xmn -Xss 调优总结

常见配置举例 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制.32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制.我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m. 典型设置: java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:设置JVM最大可用内存为3550M. -Xms3550m:设置JVM促使内存为3550m.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存. -Xmn2g:设置年轻代大小为2G.整个堆大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小.此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8. -Xss128k: 设置每个线程的堆栈大小.JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右. java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4…

JVM内存设置多大合适?Xmx和Xmn如何设置?

问题: 新上线一个java服务,或者是RPC或者是WEB站点, 内存的设置该怎么设置呢?设置成多大比较合适,既不浪费内存,又不影响性能呢? 分析: 依据的原则是根据Java Performance里面的推荐公式来进行设置。 具体来讲: Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍 永久代 PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍。 年轻代Xmn的设置为老年代存活对象的1-1.5倍。 老年代的内存大小设置为老年代存活对象的2-3倍。 BTW: 1、Sun官方建议年轻代的大小为整个堆的3/8左右, 所以按照上述设置的方式,基本符合Sun的建议。 2、堆大小=年轻代大小+年老代大小, 即xmx=xmn+老年代大小 。 Permsize不影响堆大小。 3、为什么要按照上面的来进行设置呢? 没有具体的说明,但应该是根据多种调优之后得出的一个结论。 如何确认老年代存活对象大小? 方式1(推荐/比较稳妥): JVM参数中添加GC日志,GC日志中会记录每次FullGC之后各代的内存大小,观察老年代GC之后的空间大小。可观察一段时间内(比如2天)的FullGC之后的内存情况,根据多次的FullGC之后的老年代的空间大小数据来预估FullGC之后老年代的存活对象大小(可根据多次FullGC之后的内存大小取平均值) 方式2:(强制触发FullGC, 会影响线上服务,慎用) 方式1的方式比较可行,但需要更改JVM参数,并分析日志。同时,在使用CMS回收器的时候,有可能不能触发FullGC(只发生CMS GC),所以日志中并没有记录FullGC的日志。在分析的时候就比较难处理。…

QEMU/KVM虚拟机安装配置

1、安装相关组件: # yum install qemu-img qemu-kvm qemu-kvm-tools virt-manager virt-viewer virt-v2v virt-top libvirt libvirt-python libvirt-client python-virtinst bridge-utils tunctl 相当于如下命令: # yum install qemu-img qemu-kvm qemu-kvm-tools # yum install virt-manager virt-viewer virt-v2v…