当前位置:web 服务器 > Apache >>

服务器优化——Sysctl、Apache、MySQL

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

  配置Sysctl

  编辑此文件:

  nano -w /etc/sysctl.conf

  如果该文件为空,则输入以下内容,否则请根据情况自己做调整:

  # Controls source route verification

  # Default should work for all inte易做图ces

  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 inte易做图ces

  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 inte易做图ces

  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 inte易做图ces

  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的安全。

  以上所做的这些优化在某种程度上会增强服务器的负载性能。但请注意,最佳的配置是实践出来的。

  

上一个:MySQL优化简明指南浅析
下一个:MySQL的管理工具:phpMyAdmin使用简介

更多Apache疑问解答:
为什么配置完php之后apache重启就启动不了
php环境搭建 windows7下如何手动搭建php环境,Apache+php+Mysql
我搭建了apache和mysql还有php。我编了一个脚本
APMServ搭建的apache+php环境问题
目前apache最新版本是?可以兼容php5.3.6和mysql 5.5.11.7吗
Apache PHP Mysql 各自的功能是什么?配合在一起各自如何分工?请用形象的比喻说明下
怎么能把php的服务器端apache配置成https?谢谢您了。
靠配置apache和php的环境!愁死了!照网上说的一样做可是还不行!我的是php-5.2.17 Apache2.2....
我的apache2.2.19也是加载不了PHP,显示不能加载D:/php/php5apache2_2.dll
win7 home basic家庭版 php+mysql+apache
apache mysql mysql 配置服务器 php页面显示一片空白 测试页面访问正常 权限apache正确 能显示php文件html
apache为什么能解释php代码
如何把jsp网站放到apache上
关于apache poi 中excel 样式的问题
javaWeb工程提示:org.apache.jasper.JasperException: Unable to compile class for JSP:
Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
访问www.zzzyk.com 试试
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,