当前位置:   article > 正文

liunx调优(未完)_linux 调优

linux 调优
  • 文件系统调优:
    • 使用适当的文件系统:选择合适的文件系统类型,如Ext4、XFS等,以满足性能和可靠性需求。
      • 根据需求选择适当的文件系统类型。常见的Linux文件系统包括ext4、XFS、Btrfs等,每种文件系统都有其特定的性能和功能特点。
      • 考虑文件系统的可靠性、性能、快照支持、扩展性等因素,并选择最适合应用需求的文件系统。
    • 调整文件系统参数:通过修改文件系统的参数来提高性能,如调整读写缓冲区大小、文件系统日志模式等。
      • 考虑修改文件系统的参数以提高性能。例如,调整文件系统的读写缓存大小、最大文件句柄数、写入延迟等参数。
      • 对于ext4文件系统,可以调整相关参数如data=writeback、commit等来改善性能。
    • 使用适当的挂载选项:
      • 在挂载文件系统时,使用适当的挂载选项以优化性能。例如,对于SSD驱动器,可以使用noatime选项来禁用文件访问时间更新,减少写操作。
      • 其他常用的挂载选项包括nodiratime、barrier、noexec等,具体根据需求和文件系统类型进行选择。
    • 分区和磁盘布局:
      • 合理分区和布局磁盘以提高性能和可用性。将不同类型的数据放在不同的分区中,例如将日志、数据库文件等分别放置在独立的分区中,以减少文件系统碎片和提高访问效率。
      • 考虑使用RAID或LVM等技术来提供磁盘冗余和灵活性。
        • RAID(冗余阵列)和 LVM(逻辑卷管理)是常用的技术,用于提供磁盘冗余性和灵活性。下面是它们的简要介绍和如何使用它们:
        • RAID(冗余阵列):RAID 是一种通过将多个物理磁盘组合起来创建逻辑卷的技术,它提供了数据冗余和/或增加存储性能的能力。常见的 RAID 级别包括 RAID 0、RAID 1、RAID 5、RAID 6 等。每个级别都有不同的冗余和性能特性。
          • RAID 0:条带化(Striping),将数据分散存储在多个磁盘上,提高性能,但没有冗余。
          • RAID 1:镜像化(Mirroring),将数据复制到多个磁盘上,提供冗余性。
          • RAID 5:条带化加奇偶校验(Striping with Parity),将数据和校验信息分散存储在多个磁盘上,提供冗余性和性能。
          • RAID 6:类似于 RAID 5,但提供了更高的冗余性,可以容忍多个磁盘故障。
        • 使用 RAID 技术,您可以在操作系统级别或硬件级别实现。在操作系统级别,您可以使用软件 RAID(例如 Linux 的 mdadm)配置和管理 RAID 数组。在硬件级别,您可以使用 RAID 控制器卡来管理 RAID 数组。
        • LVM(逻辑卷管理):LVM 是一种在物理磁盘上创建逻辑卷并提供灵活性和管理功能的技术。它允许您将多个物理磁盘组合成一个或多个卷组(Volume Group),并在卷组上创建逻辑卷(Logical Volume)。您可以根据需要调整逻辑卷的大小,添加或删除磁盘,以及进行快照和扩展等操作。
          • LVM扩容
            • 使用物理卷管理工具(如pvresize)扩展 LVM 卷:
              • 命令:pvresize /dev/sdX (将 /dev/sdX 替换为要扩展的物理卷的设备名称)
              • 说明:这会扩展指定的物理卷以利用新增的磁盘空间。
            • 使用逻辑卷管理工具(如lvextend)扩展 LVM 逻辑卷:
              • 命令:lvextend -L +XG /dev/mapper/vgname-lvname (将 X 替换为要增加的容量,vgname 替换为卷组名称,lvname 替换为逻辑卷名称)
              • 说明:这会将指定的逻辑卷增加 X GB 的容量。
            • 使用文件系统工具(如resize2fs)扩展 ext2/ext3/ext4 文件系统:
              • 命令:resize2fs /dev/mapper/vgname-lvname (将 vgname 替换为卷组名称,lvname 替换为逻辑卷名称)
              • 说明:这会将文件系统扩展到逻辑卷的新容量。
            • 使用磁盘分区工具(如fdisk、parted)调整分区大小:
              • 命令:根据具体工具使用方式进行分区调整,一般包括删除旧分区、创建新分区并使用新的起始扇区。
              • 说明:这种方式适用于直接调整分区大小的情况,但可能需要重新挂载文件系统或重启系统才能生效。
        • 使用 LVM,您可以在操作系统级别进行配置和管理。在 Linux 系统中,LVM 的相关工具包括 pvcreate(创建物理卷)、vgcreate(创建卷组)、lvcreate(创建逻辑卷)等。您可以使用这些工具来创建和管理 LVM。
        • 要使用 RAID 或 LVM 技术提供磁盘冗余和灵活性,您需要按照以下步骤进行操作:
          • 硬件准备:确保您有足够的物理磁盘可供使用,并了解它们的属性和规格。
          • RAID 配置:如果选择使用 RAID 技术,确定所需的 RAID 级别,并配置 RAID 数组。这可以通过软件或硬件 RAID 实现。
          • LVM 配置:如果选择使用 LVM 技术,创建一个或多个卷组,并在其上创建逻辑卷。根据需要进行大小调整和其他管理操作。
          • 文件系统:在 RAID 数组或逻辑卷上创建文件系统,使其可用于存储和访问数据。
          • 检测和监控:定期检查 RAID 数组或 LVM 的状态,确保磁盘冗余和性能正常工作。监控磁盘健康状态和存储使用情况。
        • 请注意,使用 RAID 和 LVM 都涉及到数据存储的重要操作,因此在操作之前,请确保您了解这些技术的工作原理和潜在的风险。此外,备份重要数据也是非常重要的,以防止意外数据丢失。
    • 文件系统压缩:
      • 对于支持文件系统压缩的文件系统,可以考虑使用压缩功能来减少磁盘空间的使用和提高文件访问速度。但是需要权衡压缩和解压缩的开销。
    • 定期维护和监控:
      • 定期进行文件系统的维护和检查,如文件系统修复、碎片整理等操作,以保持文件系统的健康状态。
      • 监控文件系统的空间使用率、读写性能等指标,及时发现和解决问题。
  • 内核参数调优:
    • 调整内核参数:修改/sys或/proc文件系统中的内核参数,以优化系统性能,如调整网络参数、文件句柄限制、内存管理参数等。
      • /sys或/proc文件系统具体文件和参数
        • /proc/sys 目录:包含了各种内核参数的文件,可以通过修改这些文件来调整内核参数。例如:
          • /proc/sys/net/ipv4/tcp_syncookies:TCP SYN cookies的开关。
          • /proc/sys/net/ipv4/tcp_fin_timeout:TCP连接终止的超时时间。
        • /sys 目录:提供了对内核和设备驱动程序的运行时访问和控制。其中的一些文件和目录可以用于调整系统配置。例如:
          • /sys/kernel/sched_min_granularity_ns:调度器的最小时间片。
          • /sys/kernel/sched_wakeup_granularity_ns:调度器的唤醒间隔。
        • /proc/sys/fs 目录:包含与文件系统相关的内核参数。例如:
          • /proc/sys/fs/file-max:系统最大文件句柄数。
          • /proc/sys/fs/nr_open:每个进程可以打开的文件句柄数的限制。
        • /proc/sys/net 目录:包含与网络相关的内核参数。例如:
          • /proc/sys/net/core/somaxconn:每个套接字监听队列的最大长度。
          • /proc/sys/net/ipv4/tcp_max_syn_backlog:TCP SYN队列的最大长度。
        • /proc/sys 目录:
          • /proc/sys/kernel/panic:内核崩溃时的延迟时间。
          • /proc/sys/kernel/sem:进程间信号量的最大值。
          • /proc/sys/kernel/threads-max:系统支持的最大线程数。
          • /proc/sys/vm/swappiness:内核在进行交换(swap)前尝试使用内存的程度。
        • /sys 目录:
          • /sys/devices/system/cpu 目录:包含了与CPU相关的文件,如 CPU 频率和性能模式。
          • /sys/block/<device>/queue/scheduler:磁盘调度器(I/O Scheduler)的选择。
          • /sys/class/net/<interface>/mtu:网络接口的最大传输单元(MTU)。
        • /proc/sys/fs 目录:
          • /proc/sys/fs/file-max:系统最大文件句柄数。
          • /proc/sys/fs/inotify/max_user_watches:每个用户可监视的文件数。
          • /proc/sys/fs/nr_open:每个进程可以打开的文件句柄数的限制。
        • /proc/sys/net 目录:
          • /proc/sys/net/core/somaxconn:每个套接字监听队列的最大长度。
          • /proc/sys/net/ipv4/ip_forward:IPv4 转发的开关。
          • /proc/sys/net/ipv4/tcp_keepalive_time:TCP keepalive 的时间间隔。
      • 内存管理:
        • vm.swappiness:调整内存交换行为的参数。可以设置为较低的值(如1)以减少交换分区的使用,提高性能。
        • vm.dirty_ratio和vm.dirty_background_ratio:控制脏页面(待写入磁盘的数据)的比例。可以适当调整这两个参数,以平衡系统性能和数据持久性之间的权衡。
      • 文件系统:
        • fs.file-max:设置系统最大文件句柄数。适当增加该值可以支持更多的文件打开操作。
        • fs.nr_open:设置每个进程可以打开的文件句柄数的限制。
      • 网络:
        • net.core.somaxconn:设置系统中每个套接字监听队列的最大长度。可以调整该值以适应高并发连接。
        • net.ipv4.tcp_max_syn_backlog:设置TCP SYN队列的最大长度,用于处理入站连接请求。
      • 调度器和性能:
        • kernel.sched_min_granularity_ns和kernel.sched_wakeup_granularity_ns:调整调度器的最小时间片和唤醒间隔,以平衡响应性能和CPU利用率。
        • kernel.numa_balancing:控制NUMA架构系统中内存和进程的平衡行为。
      • 安全和网络:
        • net.ipv4.tcp_syncookies:启用SYN cookies以抵御TCP SYN Flood攻击。
        • net.ipv4.tcp_fin_timeout:调整TCP连接终止的超时时间,以释放处于TIME_WAIT状态的连接。
    • 提高文件描述符限制:增加文件描述符的限制,以便系统可以处理更多的并发连接和文件操作。
  • 网络调优:
    • TCP参数优化:调整TCP协议的参数,以提高网络传输性能和稳定性,如修改TCP窗口大小、启用TCP快速打开等。
    • 使用网络加速工具:使用工具如TCP BBR、Nginx、HAProxy等来优化网络传输效率和负载均衡能力。
  • 内存管理调优:
    • 提高文件系统缓存:通过调整内核参数,提高文件系统的缓存大小,加快文件访问速度。
    • 使用适当的Swap分区:配置合适的Swap分区,以满足内存需求和提高系统的稳定性。
  • CPU调优:
    • 设置合理的CPU调度策略:根据应用程序的特点,选择适当的CPU调度策略,如CFS、实时调度等。
    • 禁用不必要的CPU频率调节:禁用动态频率调节,将CPU频率锁定在固定的值,以提供稳定的性能。
  • 磁盘IO调优:
    • 使用RAID技术:使用RAID来提高磁盘IO性能和可靠性。
    • 使用磁盘调度器:选择合适的磁盘调度算法,以优化磁盘IO性能,如NOOP、Deadline、CFQ等。
      • NOOP、Deadline、CFQ算法
        • NOOP(No-op)算法:NOOP 算法是一种简单的磁盘调度算法,它不对磁盘访问请求进行排序或调度,按照请求的顺序进行处理。适合于低负载的系统或具有自身磁盘调度能力的设备,例如固态硬盘(SSD)。它的优点是可以最大限度地减少 CPU 的开销,并且适用于不需要复杂调度的情况。
        • Deadline 算法:Deadline 算法根据请求的截止时间(deadline)进行调度,将优先级较高的请求优先处理。它的目标是保证及时响应对实时性要求较高的请求。适合于对响应时间有较高要求的环境,如交互式应用和实时系统。Deadline 算法通常适用于大多数普通的桌面和服务器环境。
        • CFQ(Completely Fair Queuing)算法:CFQ 算法通过将请求放入多个队列,并按照权重进行调度,以实现公平的磁盘访问。它根据进程的 I/O 优先级和权重来分配磁盘时间片,并尽量平衡不同进程之间的磁盘访问。适合于多任务环境,可以提供较好的吞吐量和公平性。CFQ 算法通常适用于具有大量并发 I/O 请求的服务器环境。
      • 使用适当的磁盘调度算法:磁盘调度算法决定了磁盘访问请求的顺序,以优化磁盘性能。常见的磁盘调度算法包括 CFQ、Deadline、NOOP 等。具体操作如下:
        • 查看当前磁盘调度算法:cat /sys/block/sdX/queue/scheduler(将 sdX 替换为磁盘设备名称)
        • 切换磁盘调度算法(例如切换到 Deadline 算法):echo deadline > /sys/block/sdX/queue/scheduler(将 sdX 替换为磁盘设备名称)
      • 启用磁盘缓存:磁盘缓存可以提高磁盘 I/O 的性能。具体操作如下:
        • 查看当前磁盘缓存设置:cat /sys/block/sdX/device/cache_mode(将 sdX 替换为磁盘设备名称)
        • 启用磁盘缓存:echo writeback > /sys/block/sdX/device/cache_mode(将 sdX 替换为磁盘设备名称)
      • 调整磁盘 I/O 调度参数:可以调整一些磁盘 I/O 相关的参数来优化性能。具体操作如下:
        • 调整读写请求的批处理大小:echo X > /sys/block/sdX/queue/read_ahead_kb(将 sdX 替换为磁盘设备名称,X 替换为批处理大小的值)
  • 进程和服务管理:
    • 禁用不必要的服务:停止或禁用不需要的系统服务和进程,以释放系统资源并提高性能。
    • 使用进程管理工具:使用工具如systemd、supervisord等来管理进程的启动、停止和监控,以提高进程的稳定性和可管理性。
  • 网络优化:
    • 使用网络加速技术:采用技术如网络加速器、网卡绑定、数据包分发等来提高网络吞吐量和传输效率。
    • 调整网络缓冲区:根据网络流量和延迟需求,调整网络缓冲区的大小,以提高网络传输性能。
  • 日志管理:
    • 管理日志大小:配置日志轮转和压缩机制,限制日志文件大小,避免日志过大导致磁盘空间不足。
    • 合理设置日志级别:根据需要,调整日志级别,避免过多的冗余日志记录,提高系统的效率。
  • 安全性调优:
    • 配置防火墙:使用防火墙工具如iptables、firewalld等来限制入站和出站的网络访问,提高系统的安全性和稳定性。
    • 硬化系统设置:禁用不必要的协议和服务,限制用户权限,加强系统的安全性。
  • 资源限制和优化:
    • 进程资源限制:通过配置ulimit参数,限制单个进程的资源使用,以防止某个进程过度消耗系统资源。
    • 使用资源监控工具:使用工具如top、htop、sar等来监控系统资源的使用情况,及时发现和解决资源瓶颈问题。
  • 应用程序调优:
    • 优化数据库配置:针对具体的数据库系统,调整数据库的缓存大小、连接池设置等,以提高数据库性能。
    • 使用缓存技术:采用缓存技术如Redis、Memcached等来缓存热门数据,减轻后端服务器的负载。
  • 缺失的部分交流一下。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/149104
推荐阅读
相关标签
  

闽ICP备14008679号