`
kfyfly
  • 浏览: 54333 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
一、服务调优:
删除所有那些不能在你系统上使用的默认用户和组账户:  lp,sync,shutdown,halt, news, uucp, operator, games, gopher
禁止并且卸载所有没有用的服务,那样的话,你就能少担心一些。
如果机器上只跑apache那停掉ftp、dns、mysql、rpc等服务。

二、磁盘子系统的调优
静态文件、模板和代码都来自磁盘,组成数据库的数据表和索引也来自磁盘。因此,花一些时间对磁盘硬件进行优化是有意义的。
在文件系统上禁用 atime 日志记录特性。atime 是最近访问文件的时间,每当访问文件时,底层文件系统必须记录这个时间戳。因为系统管理员很少使用 atime,禁用它可以减少磁盘访问时间。禁用这个特性的方法是,在 /etc/fstab 的第四列中添加 noatime 选项。
可以使用 hdparm 命令查明和设置用来访问 IDE 磁盘的方法。hdparm -t /path/to/device 执行速度测试,对于 Fiber Channel and Small Computer Systems Interface(SCSI)系统,调优依赖于具体的驱动器。
演示如何启用 noatime 的 fstab 示例
               
/dev/VolGroup00/LogVol00 /                      ext3    defaults,noatime        1 1
LABEL=/boot             /boot                   ext3    defaults,noatime        1 2
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
LABEL=SWAP-hdb2         swap                    swap    defaults        0 0
LABEL=SWAP-hda3         swap                    swap    defaults        0 0

不过不见意这样做。

三、TCP/IP子系统的调优
所有的TCP/IP调优参数都位于/proc/sys/net/目录. 例如, 下面是最重要的一些调优参数, 后面是它们的含义:
  1. /proc/sys/net/core/rmem_max — 最大的TCP数据接收缓冲
  2. /proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲
  3. /proc/sys/net/ipv4/tcp_timestamps — 时间戳在TCP的包头增加12个字节
  4. /proc/sys/net/ipv4/tcp_sack — 有选择的应答
  5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 如果TCP窗口最大超过65535(64K), 必须设置该数值为1
  6. rmem_default — 默认的接收窗口大小
  7. rmem_max — 接收窗口的最大大小
  8. wmem_default — 默认的发送窗口大小
  9. wmem_max — 发送窗口的最大大小
  /proc目录下的所有内容都是临时性的, 所以重启动系统后任何修改都会丢失.
  建议在系统启动时自动修改TCP/IP参数:
  把下面代码增加到/etc/rc.local文件, 然后保存文件, 系统重新引导的时候会自动修改下面的TCP/IP参数:
  echo 256960 > /proc/sys/net/core/rmem_default
  echo 256960 > /proc/sys/net/core/rmem_max
  echo 256960 > /proc/sys/net/core/wmem_default
  echo 256960 > /proc/sys/net/core/wmem_max
  echo 0 > /proc/sys/net/ipv4/tcp_timestamps
  echo 1 > /proc/sys/net/ipv4/tcp_sack
  echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
  TCP/IP参数都是自解释的, TCP窗口大小设置为256960, 禁止TCP的时间戳(取消在每个数据包的头中增加12字节), 支持更大的TCP窗口和TCP有选择的应答.
  上面数值的设定是根据互连网连接和最大带宽/延迟率来决定.
注: 上面实例中的数值可以实际应用

四、文件子系统的调优
ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
    ulimit -u 10000
    对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
    最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
    ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
    其他建议设置成无限制(unlimited)的一些重要设置是:
    数据段长度:ulimit -d unlimited
    最大内存大小:ulimit -m unlimited
    堆栈大小:ulimit -s unlimited
    CPU 时间:ulimit -t unlimited
    虚拟内存:ulimit -v unlimited
    暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
    永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:
1)、解除 Linux 系统的最大进程数和最大文件打开数限制:
       vi /etc/security/limits.conf
       # 添加如下的行
       * soft noproc 11000
       * hard noproc 11000
       * soft nofile 4100
       * hard nofile 4100
   说明:* 代表针对所有用户
                   noproc 是代表最大进程数
                   nofile 是代表最大文件打开数
2)、修改所有 linux 用户的环境变量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited

/**************************************
有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改2个文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480
2./etc/pam.d/login
session required /lib/security/pam_limits.so
**********
另外确保/etc/pam.d/system-auth文件有下面内容
session required /lib/security/$ISA/pam_limits.so
这一行确保系统会执行这个限制。
***********
3.一般用户的.bash_profile
#ulimit -n 1024
重新登陆ok



五、内存子系统的调优
  内存子系统的调优不是很容易,需要不停地监测来保证内存的改变不会对服务器的其他子系统造成负面影响。如果要改变虚拟内存参数(在/proc/sys/vm),建议您每次只改变一个参数然后监测效果。对与虚拟内存的调整包括以下几个项目:
  配置Linux内核如何更新dirty buffers到磁盘。磁盘缓冲区用于暂存磁盘的数据。相对于内存来讲,磁盘缓冲区的速度很慢。因此,如果服务器使用这类内存,性能会成问题。当缓冲区内的数据完全dirty,使用:sysctl -w vm.bdflush="30 500 0 0 500 3000 60 20 0"
  vm.bdflush有9个参数,但是建议您只改变其中的3个:
  1 nfract, 为排队写入磁盘前,bdflush daemon允许的缓冲区最大百分比
  2 ndirty, 为bdflush即刻写的最大缓冲区的值。如果这个值很大,bdflush需要更多的时间完成磁盘的数据更新。
  7 nfract_sync, 发生同步前,缓冲区变dirty的最大百分比
  配置kswapd daemon,指定Linux的内存页数量
  sysctl -w vm.kswapd="1024 32 64"
  三个参数的描述如下:
  – tries_base 相当于内核每次所的“页”的数量的四倍。对于有很多交换信息的系统,增加这个值可以改进性能。
  – tries_min 是每次kswapd swaps出去的pages的最小数量。
  – swap_cluster 是kswapd 即刻写如的pages数量。数值小,会提高磁盘I/O的性能;数值大可能也会对请求队列产生负面影响。
  如果要对这些参数进行改动,请使用工具vmstat检查对性能的影响。
六、网络子系统的调优
操作系统安装完毕,就要对网络子系统进行调优。对其它子系统的影响:影响CPU利用率,尤其在有大量TCP连接、块尺寸又非常小时,内存的使用会明显增加。
  如何预防性能下降
  如下的sysctl命令用于改变安全设置,但是它也可以防止网络性能的下降。这些命令被设置为缺省值。
◆关闭如下参数可以防止黑客对服务器IP地址的攻击
sysctl -w net.ipv4.conf.eth0.accept_source_route=0
sysctl -w net.ipv4.conf.lo.accept_source_route=0
sysctl -w net.ipv4.conf.default.accept_source_route=0
sysctl -w net.ipv4.conf.all.accept_source_route=0
◆开启TCP SYN cookies,保护服务器避免受syn-flood攻击,包括服务取决denial-of-service (DoS) 或者分布式服务拒绝distributed denial-of-service (DDoS) (仅适用Red Hat Enterprise Linux AS)
sysctl -w net.ipv4.tcp_syncookies=1
◆以下命令使服务器忽略来自被列入网关的服务器的重定向。因重定向可以被用来进行攻击,所以我们只接受有可靠来源的重定向。
sysctl -w net.ipv4.conf.eth0.secure_redirects=1
sysctl -w net.ipv4.conf.lo.secure_redirects=1
sysctl -w net.ipv4.conf.default.secure_redirects=1
sysctl -w net.ipv4.conf.all.secure_redirects=1

另外,你可以配置接受或拒绝任何ICMP重定向。ICMP重定向是器传输信息的机制。比如,当网关接收到来自所接网络主机的Internet数据报时,网关可以发送重定向信息到一台主机。网关检查路由表获得下一个网关的地址,第二个网关将数据报路由到目标网络.关闭这些重定向得命令如下:
sysctl -w net.ipv4.conf.eth0.accept_redirects=0
sysctl -w net.ipv4.conf.lo.accept_redirects=0
sysctl -w net.ipv4.conf.default.accept_redirects=0
sysctl -w net.ipv4.conf.all.accept_redirects=0
◆如果这个服务器不是一台路由器,那么它不会发送重定向,所以可以关闭该功能:
sysctl -w net.ipv4.conf.eth0.send_redirects=0
sysctl -w net.ipv4.conf.lo.send_redirects=0
sysctl -w net.ipv4.conf.default.send_redirects=0
sysctl -w net.ipv4.conf.all.send_redirects=0
◆配置服务器拒绝接受广播风暴或者smurf 攻击attacks:
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
◆忽略所有icmp包或者pings:
sysctl -w net.ipv4.icmp_echo_ignore_all=1
◆有些路由器针对广播祯发送无效的回应,每个都产生警告并在内核产生日志.这些回应可以被忽略:
sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

针对TCP和UDP的调优
下边的命令用来对连接数量非常大的服务器进行调优.
◆对于同时支持很多连接的服务器,新的连接可以重新使用TIME-WAIT套接字. 这对于Web服务器非常有效:
sysctl -w net.ipv4.tcp_tw_reuse=1
如果你使用该命令,还要启动TIME-WAIT 套接字状态的快速循环功能:
sysctl -w net.ipv4.tcp_tw_recycle=1
图Figure 10-7显示出将这些功能启用,连接数量明显降低.因为每个TCP传输都包含远程客户端的信息缓存,所以有利于提高性能.缓存中存放round-trip时间、最大segment大小、拥塞窗口的信息。
◆参数tcp_fin_timeout 是套接字关闭时,保持FIN-WAIT-2状态的时间。一个TCP连接以three-segment SYN序列开始, 以three-segment FIN序列结束.均不保留数据.通过改变tcp_fin_timeout的值, 从FIN序列到内存可以空闲出来处理新连接的时间缩短了,使性能得到改进.改变这个值的前要经过认真的监测,避免因为死套接字造成内存溢出.
sysctl -w net.ipv4.tcp_fin_timeout=30
◆服务器的一个问题是,同一时刻的大量TCP连接里有很多的连接被打开但是没有使用. TCP的keepalive功能检测到这些连接,缺省情况下,在2小时之后丢掉. 2个小时的可能导致内存过度使用,降低性能.因此改成1800秒(30分钟)是个更好的选择:
sysctl -w net.ipv4.tcp_keepalive_time=1800
◆对于所有的队列,设置最大系统发送缓存(wmem) 和接收缓存(rmem)到8MB
sysctl -w net.ipv4.core.wmem_max=8388608
sysctl -w net.ipv4.core.rmem_max=8388608
这些设置指定了创建TCP套接字时为其分配的内存容量. 另外,使用如下命令发送和接收缓存.该命令设定了三个值:最小值、初始值和最大值:
sysctl -w net.ipv4.tcp_rmem="4096 87380 8388608"
sysclt -w net.ipv4.tcp.wmem="4096 87380 8388608"
第三个值必须小于或等于wmem_max和rmem_max。
◆(SUSE LINUX Enterprise Server适用) 通过保留路径验证来源数据包。缺省情况下,路由器转发所有的数据包,即便是明显的异常网络流量。通过启动和是的过滤功能,丢掉这些数据包:
sysctl -w net.ipv4.conf.eth0.rp_filter=1
sysctl -w net.ipv4.conf.lo.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.conf.all.rp_filter=1
◆当服务器负载繁重或者是有很多客户端都是超长延时的连接故障,可能会导致half-open连接数量的增加。这对于Web服务器很来讲很平常,尤其有很多拨号客户时.这些half-open连接保存在 backlog connections 队列中.将这个值最少设置为4096 (缺省为1024). 即便是服务器不接收这类连接,设置这个值还能防止受到denial-of-service (syn-flood)的攻击.
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
◆设置ipfrag参数,尤其是NFS和Samba服务器。这里,我们可以设置用于重新组合IP碎片的最大、最小内存。当ipfrag_high_thresh值被指派,碎片会被丢弃直到达到ipfrag_low_thres值。
当TCP数据包传输发生错误时,开始碎片整理。有效的数据包保留在内存,同时损坏的数据包被转发。例如,设置可用内存范围从256 MB到384 MB
sysctl -w net.ipv4.ipfrag_low_thresh=262144
sysctl -w net.ipv4.ipfrag_high_thresh=393216
七、网络安全设置:
TCP SYN Flood 攻擊
TCP SYN Flood是一種常見,而且有效的遠端(遠程)拒絕服務(Denial of Service)攻擊方式,它透過一定的操作破壞TCP三次握手建立正常連接,佔用並耗費系統資源,使得提供TCP服務的主機系統無法正常工作。 由於TCP SYN Flood是透過網路底層對服務器Server進行攻擊的,它可以在任意改變自己的網路IP地址的同時,不被網路上的其他設備所識別,這樣就給防範網路犯罪部門追查犯罪來源造成很大的困難。
系統檢查
  一般情況下,可以一些簡單步驟進行檢查,來判斷系統是否正在遭受TCP SYN Flood攻擊。
  1、 服務端無法提供正常的TCP服務。連接請求被拒絕或超時。
  2、透過 netstat -an 命令檢查系統,發現有大量的SYN_RECV連接狀態。
    3. iptables的设置,引用自CU
  防止同步包洪水(Sync Flood)
  # iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
  也有人写作
  #iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
  --limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改
防止各种端口扫描
  # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
  Ping洪水攻击(Ping of Death)
  # iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT


----------------------------------------------------------------------------------------------------------------------------
暂定步骤:
修改/etc/profile文件,加入:
ulimit -u 10240
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited
修改/etc/rc.d/rc.local,加入:
echo ‘131072′ > /proc/sys/fs/file-max
echo ‘131072′ > /proc/sys/fs/inode-max
(1G内存值修改成:65535 2G内存值修改成:131072    4G内存值修改成:262144)
修改/etc/sysctl.conf文件,加入:
net.core.rmem_default = 8388608
net.core.rmem_max = 8388608
net.core.wmem_default = 8388608
net.core.wmem_max = 8388608
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1
net.core.netdev_max_backlog=3000
#Modify i-node
sys.fs.file-max= 65535
sys.fs.inode-max= 65535
#Set System Memory
vm.bdflush="30 500 0 0 500 3000 60 20 0"
vm.kswapd="1024 32 64"
#Disable HackAttack!
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.lo.secure_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.eth0.secure_redirects=0
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.eth0.send_redirects=0
net.ipv4.conf.lo.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.tcp_syncookies=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
#Web Servers
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_keepalive_time=1800
net.ipv4.core.wmem_max=16777216
net.ipv4.core.rmem_max=16777216
net.ipv4.tcp_rmem="4096 87380 8388608"
net.ipv4.tcp.wmem="4096 87380 8388608"
net.ipv4.tcp_max_syn_backlog=8192
防火墙安全:
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写作
iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改
防止各种端口扫描
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
备注说明:(相对比较激进的网络参数调整)
# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling: = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase Linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000
分享到:
评论

相关推荐

    Linux系统优化中文字体

    标题“Linux系统优化中文字体”所指的就是针对这个问题,通过引入和配置更适合阅读的中文字体,如“雅黑”,来提升Linux系统的中文界面的视觉体验。 描述中提到的“使用雅黑字体优化中文界面”,雅黑(Microsoft ...

    生产环境Linux系统优化方法.pdf

    生产环境Linux系统优化方法 本文档介绍了生产环境Linux系统优化方法,涵盖文件系统、内核参数和服务组件三个方面的优化方法。下面是其中的一些关键知识点: 1. 文件系统优化 * tmpfs文件系统是一种基于内存的文件...

    Linux系统优化与安全

    本主题“Linux系统优化与安全”涵盖了如何最大化利用Linux系统的性能,以及确保系统安全的关键策略。 一、Linux系统优化 1. **内核优化**:Linux内核是系统的核心,优化内核配置可以提升系统效率。例如,根据实际...

    嵌入式Linux系统优化详解

    嵌入式Linux系统优化是提高嵌入式设备性能和可靠性的关键技术。本文涉及的优化策略主要包括增强系统稳定性、加速系统和程序、减小系统和程序大小、降低系统功耗、提高系统实时响应能力等方面。此外,还强调了成本和...

    Linux系统优化脚本.sh

    Linux系统优化脚本,用做服务器安装上线前进行Linux系统功能优化。采用Shell脚本编写,可自己进行修改和编辑。

    linux系统优化重点简单总结

    Linux 系统优化重点简单总结 Linux 系统优化是指通过一系列操作来提高 Linux 系统的性能、安全性和稳定性。本文将从多个方面介绍 Linux 系统优化的重要步骤。 1. 关闭 SELinux SELinux 是 Linux 系统中的一个安全...

    通用的优化Linux系统的六大妙招

    在Linux系统优化中,遵循“少就是多”的原则至关重要,即只运行必要的服务,使用最适合的工具,并尽可能利用命令行效率。以下六个优化策略可以帮助你提升Linux系统的性能: 1. **编译选项优化** 编译程序时,选择...

    Linux系统优化概要.docx

    Linux系统优化是一个复杂而精细的过程,涉及到系统的各个方面,包括网络性能、系统配置、软件编译等。优化的主要目的是提升系统的效率、稳定性和响应速度,确保应用程序和服务能够高效地运行。 在Linux系统中,网络...

    Linux系统优化

    Linux系统优化

    linux-操作系统优化方案.doc

    针对Red Hat Enterprise Linux AS和SUSE LINUX Enterprise Server,有多种策略可以实现系统优化。本文主要探讨了八个关键方面,包括关闭不必要的守护进程(Daemons)、停用图形用户界面(GUI)、调整内核参数以及针对...

    linux系统安全和优化

    ### Linux系统优化 #### 1. 内核参数调整 内核参数直接影响着系统的性能表现。例如,通过编辑`/etc/sysctl.conf`文件来调整内存分配、进程调度等相关参数,可以在不牺牲稳定性的情况下提升性能。 #### 2. 服务与...

    redhat系列linux系统优化脚本

    #系统内核优化 net.ipv4.ip_forward = 1 vm.swappiness = 0 vm.overcommit_memory = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.tcp_syncookies = 1 # 增加操作系统记录数量 #调整系统最大tcp连接数 #SSH...

    Linux 系统优化的一些建议(内核优化)

    Linux系统优化是一个重要的任务,尤其是对于承载关键服务的服务器来说,优化能显著提高系统性能、稳定性和资源利用率。本文主要关注内核级别的优化,特别是针对内存管理和网络参数的调整。 首先,关闭交换分区...

    Linux的奇思妙想之系统优化技巧

    Linux系统优化技巧是提高系统效率和管理便捷性的关键所在。以下是一些实用的Linux系统优化方法: 1. **禁止终端模式下的显示器自动节能** 在Linux中,有时我们需要显示器保持常亮状态,以便查看实时信息,例如网络...

    Linux通用系统优化大全.zip

    重新编译内核是Linux系统优化的重要步骤,可以根据实际硬件配置和应用需求定制内核。通过移除不必要的模块和功能,可以使内核更加精简,提高系统启动速度和运行效率。同时,添加或调整内核参数也能优化特定场景下的...

    熟悉 Linux 系统的安全和优化.rar

    二、Linux系统优化 1. 系统调优:包括内核参数调优,如通过sysctl配置内核参数,优化内存、CPU、I/O等性能。 2. 进程管理:合理调度进程优先级,使用nice和renice命令调整CPU调度,避免资源浪费。 3. 文件系统优化...

    中标普华Linux系统讲座—系统优化PPT学习教案.pptx

    【Linux系统优化】这篇PPT教程主要关注于Linux系统的监控和优化,特别是针对中标普华Linux系统。系统优化是确保服务器高效稳定运行的关键步骤,它涉及到CPU、内存、磁盘I/O、网络等多个层面。 1. **uptime命令**:...

    linux-Linux性能优化实战案例

    在《Linux性能优化实战》案例中,我们深入探讨了如何利用Linux系统工具和技术来提升系统的运行效率和性能。Linux作为一款开源操作系统,其强大的可定制性和丰富的工具集使其成为性能优化的理想平台。以下是一些核心...

Global site tag (gtag.js) - Google Analytics