热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux入职基础3.6_ramdisk提升Apache性能实例(运维必懂)

ramdisk提升Apache性能实例(运维的必懂)

在阅读本篇文章之前,需要具备对/dev目录的设备文件和/proc目录下虚文件有一定基础知识的积累。所以,在此之前,整理几篇有关Linux设备管理方面的知识点,如下:

《了解proc目录文件》

《常用设备文件介绍》

《设备文件zero与null》

《mount设备挂载十例讲解》

《设备文件loop》

以上这些,将来亦会有不断更新。

同事疑惑,曰:为何要花去大半周时间写上述几篇文章?

回复:起因于上周代课时,一开始就讲ramdisk设备文件用途,中途发现大家很迷茫!原来缺少Linux设备方面知识点的基础铺垫。

一、ramdisk基本介绍

ramdisk一般指虚拟内存盘。

原理:

ramdisk就是通过软件将计算机的一部分内存(RAM)模拟为硬盘来使用的一种技术。linux系统可以使用其内核支持的机制来实现。

优点:

①ramdisk是系统RAM内存的一段,相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度(包括读和写)。

②ramdisk可以被当成是一个文件系统来操作(还可带有压缩的机制,如cramfs)。

缺点:

RAM的易失性也意味着当计算机重启或关机时会丢失数据,同时会减少系统可用的RAM,故需要控制一定的比例,否则,过多占用会导致系统运行缓慢

常见用途:

①将ramdisk做为Web缓存的设备,这样可以提高加载页面的速度。

②在ramdisk上保存一个较大的数据集。如公司把crm系统的高频访问的这几张表与数据字典表建在ramdisk,加速数据查询。

③挂载loopback文件系统(例如,从软盘或CD运行)

Linux的2.4内核以上的版本均内建支持RamDisk,默认创建16个RamDisk,如下:

[[email protected] ~]# ls -l /dev/ram*

lrwxrwxrwx 1 root root     4 Dec 10 12:52 /dev/ram -> ram1

brw-r----- 1 root disk 1,  0 Dec 10 20:52 /dev/ram0

brw-r----- 1 root disk 1,  1 Dec 10 20:52 /dev/ram1

brw-r----- 1 root disk 1, 10 Dec 10 20:52/dev/ram10

brw-r----- 1 root disk 1, 11 Dec 10 20:52/dev/ram11

brw-r----- 1 root disk 1, 12 Dec 10 20:52/dev/ram12

brw-r----- 1 root disk 1, 13 Dec 10 20:52/dev/ram13

brw-r----- 1 root disk 1, 14 Dec 10 20:52/dev/ram14

brw-r----- 1 root disk 1, 15 Dec 10 20:52/dev/ram15

brw-r----- 1 root disk 1,  2 Dec 10 20:52 /dev/ram2

brw-r----- 1 root disk 1,  3 Dec 10 20:52 /dev/ram3

brw-r----- 1 root disk 1,  4 Dec 10 20:52 /dev/ram4

brw-r----- 1 root disk 1,  5 Dec 10 20:52 /dev/ram5

brw-r----- 1 root disk 1,  6 Dec 10 20:52 /dev/ram6

brw-r----- 1 root disk 1,  7 Dec 10 20:52 /dev/ram7

brw-r----- 1 root disk 1,  8 Dec 10 20:52 /dev/ram8

brw-r----- 1 root disk 1,  9 Dec 10 20:52 /dev/ram9

lrwxrwxrwx 1 root root     4 Dec 10 12:52 /dev/ramdisk -> ram0

二、综合实例:使用ramdisk提升Apache性能

简单搭建一个Apache服务环境,测试成功!

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

一般用RPM安装后的Apache配置文件具体位置:

/etc/httpd/                        #Apache服务程序根目录

/etc/httpd/conf/httpd.conf           #主配置文件

/var/www/html                    #网页文档默认根目录

/var/www/icons                    #默认图标

/var/log/httpd/error_log             #错误日志文件

/var/log/httpd/access_log            #访问日志文件

如下:

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

介绍在Apache服务器上使用3个ramdisk的方法。

#首先把Apache下的目录文件备份,然后创建ramdisk挂载点。

为了提高网页的读取速度,先备份、再移动以下几个目录:

/etc/httpd/,/var/www/,/var/log/httpd/

[[email protected] ~]# tar -zcv -p -f/root/etc_httpd.tar.gz /etc/httpd

[[email protected] ~]# tar -zcv -p -f /root/var_www.tar.gz/var/www

[[email protected] ~]# tar -zcv -p -f/root/var_log_httpd.tar.gz /var/log/httpd

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

停止httpd服务,再移除上述目录

[[email protected] html]# /etc/init.d/httpdstop

Stopping httpd:                                           [  OK  ]

[[email protected] html]# mkdir /root/apache_bak

[[email protected] var]# mv /etc/httpd  /root/apache_bak/

[[email protected] var]# mv  /var/www  /root/apache_bak/

[[email protected] var]# mv  /var/log/httpd  /root/apache_bak/

新建randisk的挂载点

[[email protected] var]# mkdir /etc/httpd

[[email protected] var]# mkdir /var/www

[[email protected] var]# mkdir /var/log/httpd

创建3ramdisk

[[email protected] var]# mkfs -t ext2/dev/ram0

[[email protected] var]# mkfs -t ext2 /dev/ram1

[[email protected] var]# mkfs -t ext2 /dev/ram2

挂载ramdisk到步骤2创建的目录中

[[email protected] var]# mount /dev/ram0 /etc/httpd

[[email protected] var]# mount /dev/ram1 /var/www

[[email protected] var]# mount /dev/ram2 /var/log/httpd

#查看挂载情况

[[email protected] ~]# df -ah

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

Apche的原目录文件解压到ramdisk

[[email protected]~]# tar -zxv -f etc_httpd.tar.gz -C /

[[email protected] ~]# tar -zxv -fvar_www.tar.gz -C /

[[email protected] ~]# tar -zxv -fvar_log_httpd.tar.gz -C /

#查看文件是否成功解压回复

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

#查看ramdisk,/dev/ram0大小总计约16M,使用情况如下。

[[email protected] ~]# df -h /dev/ram0

Filesystem            Size  Used Avail Use% Mounted on

/dev/ram0              16M  194K  15M   2% /etc/httpd

重新启动Apache服务

[[email protected] ~]# /etc/init.d/httpd start

#启动成功,如下:

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

#访问测试

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

#重新启动系统,ramdisk中的目录与文件将全部丢失!

[[email protected]]# init 6

#再重新查看

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

Apache的原目录与文件将全部丢失!

接下来体会下,在内存文件系统的读写性能,如下:

#写入140M文件,456MB/s

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

#读出140M文件,951M/s,更惊人!

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

##140M文件的读写同时进行,284M/s,太棒了!

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

现在,与在《设备文件zero与null》演示的硬盘读写性能进行对比,速度快了几十倍!Apache响应性能当然一下就提高很多。

同理,检查同一批服务器主要硬件配置的优异与差别,也需要借助ramdisk帮助!

三、脚本自动创建ramdisk

##自定义的脚本文件:/etc/httpd.init#添加的命令如下:

[[email protected] ~]# vim /etc/httpd.init

#!/bin/bash

#新建挂载点

/bin/mkdir/etc/httpd

/bin/mkdir/var/www

/bin/mkdir/var/log/httpd

#格式文件系统

/sbin/mkfs-t ext2 /dev/ram0

/sbin/mkfs-t ext2 /dev/ram1

/sbin/mkfs-t ext2 /dev/ram2

#挂载

/bin/mount/dev/ram0 /etc/httpd

/bin/mount/dev/ram1 /var/www

/bin/mount/dev/ram2 /var/log/httpd

#解压Apache原文件到上述目录

/bin/tar-zxv -f etc_httpd.tar.gz -C /

/bin/tar-zxv -f var_www.tar.gz -C /

/bin/tar-zxv -f var_log_httpd.tar.gz -C /

#启动Apache服务

/etc/init.d/httpdstart

#添加后:wq保存

[[email protected] ~]# init 6    #备份关键的文件数据,重新启动系统

[[email protected]~]# /etc/httpd.init  #运行脚本,再注意观察效果

四、Increase ramdisk size

在生产环境中,有时会发生在/var/mysql/data目录下单个数据表的文件需求超出16M,如有一张120M左右的表文件, 此时需要考虑把ramdisk容量新增160M。接下来介绍如何新增ramdisk容量。

##编辑/etc/grub.conf文件,内容如下:

[[email protected] ~]# vim /etc/grub.conf

kernel /vmlinuz-2.6.18-238.el5 ro root=LABEL=/ rhgbquiet  ramdisk_size=160000

##保存文件,重启系统生效。

[[email protected] ramdisk0]# init 6

[[email protected] ~]# mkfs -t ext2 /dev/ram0

Linux入职基础-3.6_ramdisk提升Apache性能实例(运维必懂)

##基本到达我们160M的空间需求。

#当然,面对数据库的大容量单表文件,有更简单的方法,就是使用tmpfs文件系统来创建内存文件,在《mount设备挂载十例讲解》示例8中有简单的演示,大家实战运维过程中可以参考使用。

注意事项:

1、一定要记住保存ramdisk中的目录与文件,否则,一旦系统重新启动,则ramdisk的文件会全部丢失!

2、可以用cron制定一个计划,每隔5或10分种扫描ramdisk中文件是否变化,如有,则拷贝到硬盘中进行数据备份。



推荐阅读
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
  • 如何在Linux系统中利用crontab定时执行Shell脚本任务?
    在Linux系统中,如何实现定时执行任务脚本?在服务器日常运维过程中,经常需要定期执行某些任务,例如数据库备份、日志文件切割等。通过使用crontab工具,可以轻松配置这些周期性任务,确保它们按时自动运行,提高系统管理效率和可靠性。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 初探性能优化:入门指南与实践技巧
    在编程领域,常有“尚未精通编码便急于优化”的声音。为了从性能优化的角度提升代码质量,本文将带领读者初步探索性能优化的基本概念与实践技巧。即使程序看似运行良好,数据处理效率仍有待提高,通过系统学习性能优化,能够帮助开发者编写更加高效、稳定的代码。文章不仅介绍了性能优化的基础知识,还提供了实用的调优方法和工具,帮助读者在实际项目中应用这些技术。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 如何在Oracle ASM_Diskgroup中重命名现有磁盘
    如何在Oracle ASM_Diskgroup中重命名现有磁盘 ... [详细]
author-avatar
手机用户2602939201
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有