热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

服务器优化Sysctl、Apache、MySQL_MySQL

服务器的负载能力,很大程度上取决于系统管理员的配置和优化能力。相同的硬件、不同的软件配置,会造成截然不同的效果。下面我将给大家介绍一下如何优化sysctrl,Apache以及MySQL。请注意,所有配置均为取决于个人,请根据自己的实际情况做调整。配置Sysctl编辑
ApacheMySQL优化


  服务器的负载能力,很大程度上取决于系统管理员的配置和优化能力。相同的硬件、不同的软件配置,会造成截然不同的效果。下面我将给大家介绍一下如何优化 sysctrl, Apache 以及 MySQL 。请注意,所有配置均为取决于个人,请根据自己的实际情况做调整。
  
  配置Sysctl
  
  编辑此文件:
  
  nano -w /etc/sysctl.conf
  
  如果该文件为空,则输入以下内容,否则请根据情况自己做调整:
  
  # Controls source route verification
  # Default should work for all interfaces
  net.ipv4.conf.default.rp_filter = 1
  # net.ipv4.conf.all.rp_filter = 1
  # net.ipv4.conf.lo.rp_filter = 1
  # net.ipv4.conf.eth0.rp_filter = 1
  
  # Disables IP source routing
  # Default should work for all interfaces
  net.ipv4.conf.default.accept_source_route = 0
  # net.ipv4.conf.all.accept_source_route = 0
  # net.ipv4.conf.lo.accept_source_route = 0
  # net.ipv4.conf.eth0.accept_source_route = 0
  
  # Controls the System Request debugging functionality of the kernel
  kernel.sysrq = 0
  
  # Controls whether core dumps will append the PID to the core filename.
  # Useful for debugging multi-threaded applications.
  kernel.core_uses_pid = 1
  
  # Increase maximum amount of memory allocated to shm
  # Only uncomment if needed!
  # kernel.shmmax = 67108864
  
  # Disable ICMP Redirect Acceptance
  # Default should work for all interfaces
  net.ipv4.conf.default.accept_redirects = 0
  # net.ipv4.conf.all.accept_redirects = 0
  # net.ipv4.conf.lo.accept_redirects = 0
  # net.ipv4.conf.eth0.accept_redirects = 0
  
  # Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets
  # Default should work for all interfaces
  net.ipv4.conf.default.log_martians = 1
  # net.ipv4.conf.all.log_martians = 1
  # net.ipv4.conf.lo.log_martians = 1
  # net.ipv4.conf.eth0.log_martians = 1
  
  # Decrease the time default value for tcp_fin_timeout connection
  net.ipv4.tcp_fin_timeout = 25
  
  # Decrease the time default value for tcp_keepalive_time connection
  net.ipv4.tcp_keepalive_time = 1200
  
  # Turn on the tcp_window_scaling
  net.ipv4.tcp_window_scaling = 1
  
  # Turn on the tcp_sack
  net.ipv4.tcp_sack = 1
  
  # tcp_fack should be on because of sack
  net.ipv4.tcp_fack = 1
  
  # Turn on the tcp_timestamps
  net.ipv4.tcp_timestamps = 1
  
  # Enable TCP SYN COOKIE Protection
  net.ipv4.tcp_synCOOKIEs = 1
  
  # Enable ignoring broadcasts request
  net.ipv4.icmp_echo_ignore_broadcasts = 1
  
  # Enable bad error message Protection
  net.ipv4.icmp_ignore_bogus_error_respOnses= 1
  
  # Make more local ports available
  # net.ipv4.ip_local_port_range = 1024 65000
  
  # Set TCP Re-Ordering value in kernel to ‘5′
  net.ipv4.tcp_reordering = 5
  
  # Lower syn retry rates
  net.ipv4.tcp_synack_retries = 2
  net.ipv4.tcp_syn_retries = 3
  
  # Set Max SYN Backlog to ‘2048′
  net.ipv4.tcp_max_syn_backlog = 2048
  
  # Various Settings
  net.core.netdev_max_backlog = 1024
  
  # Increase the maximum number of skb-heads to be cached
  net.core.hot_list_length = 256
  
  # Increase the tcp-time-wait buckets pool size
  net.ipv4.tcp_max_tw_buckets = 360000
  
  # This will increase the amount of memory available for socket input/output queues
  net.core.rmem_default = 65535
  net.core.rmem_max = 8388608
  net.ipv4.tcp_rmem = 4096 87380 8388608
  net.core.wmem_default = 65535
  net.core.wmem_max = 8388608
  net.ipv4.tcp_wmem = 4096 65535 8388608
  net.ipv4.tcp_mem = 8388608 8388608 8388608
  net.core.optmem_max = 40960
  
  如果希望屏蔽别人 ping 你的主机,则加入以下代码:
  
  # Disable ping requests
  net.ipv4.icmp_echo_ignore_all = 1
  
  编辑完成后,请执行以下命令使变动立即生效:
  
  /sbin/sysctl -p
  /sbin/sysctl -w net.ipv4.route.flush=1
  
  MySQL优化
  
  编辑MySQL的配置文件:
  
  nano /etc/my.cnf
  
  输入以下内容:
  
  [mysqld]
  connect_timeout=15
  interactive_timeout=100
  join_buffer_size=1M
  key_buffer=128M
  max_allowed_packet=16M
  max_cOnnections=500
  max_connect_errors=10
  myisam_sort_buffer_size=64M
  read_buffer_size=1M
  read_rnd_buffer_size=768K
  sort_buffer_size=1M
  table_cache=1024
  thread_cache_size=100
  thread_cOncurrency=4
  wait_timeout=300
  query_cache_size=32M
  query_cache_limit=1M
  query_cache_type=1
  skip-innodb
  
  请注意,以上配置适用于512M~1024M内存,如内存更大的话请自行做调整。给项目增加内存会加快速度,但是使用过多的内存而导致启用swap的话,会极大的导致系统效率下降。其中 thread_concurrency 这项配置,单CPU的话请设置为2,双CPU的话请设置为4。
  
  Apache优化
  
  以下优化适用于 Apache 1.3 系列,如果你用的是 2.0 系列的话,请自行做调整和判断。
  
  确认 Apache 的配置文件位置并开始编辑:
  
  locate httpd.conf
  nano -w /path/to/httpd.conf
  
  httpd.conf的文件有许多内容,笔者就拿出需要做优化的:
  
  KeepAlive On
  MaxKeepAliveRequests 1000
  KeepAliveTimeout 3
  
  MinSpareServers 8
  MaxSpareServers 13
  
  MaxRequestsPerChild 50
  
  将 KeepAliveTimeout 设定到较小的数字将有助于减少服务器上的无用等待链接,一定程度上能增加服务器负载。
  
  另外,下面这条不算优化,但是是Apache安全相关:
  
  ServerSignature Off
  ServerTokens ProductOnly
  
  将 ServerSignature 关闭,并增加 ServerTokens ProductOnly 可以使常人无法检测到Apache的实际版本号,有助于Apache的安全。
  
  以上所做的这些优化在某种程度上会增强服务器的负载性能。但请注意,最佳的配置是实践出来的。
推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
author-avatar
deadman21
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有