AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[performance-tuning](server)

Martin Hope
Hannes
Asked: 2021-02-23 01:19:45 +0800 CST

Samba 和 luks 一起加密磁盘:尽管 CPU 资源充足,但性能损失巨大,单独 LUKS 和 samba 可以按预期工作

  • 1

设置:使用 luks aes-xts 512 位(256 位 AES 密钥)加密的 SSD,ext4 文件系统

dd 写入性能138 MB/s,CPU 使用率 97-100 %

dd if=/dev/zero of=testfile status=progress bs=32M count=128
4294967296 bytes (4,3 GB, 4,0 GiB) copied, 31 s, 138 MB/s
128+0 Datensätze ein
128+0 Datensätze aus
4294967296 bytes (4,3 GB, 4,0 GiB) copied, 31,0463 s, 138 MB/s

dd 读取性能110 MB/s,CPU 使用率从 > 90 % 开始,然后下降到大约 50-60 %,然后在文件读取结束时再次上升到 > 90 %。

#crop cache before
sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"

现在进行测试:

dd if=testfile of=/dev/null status=progress bs=32M
4261412864 bytes (4,3 GB, 4,0 GiB) copied, 39 s, 109 MB/s
128+0 Datensätze ein
128+0 Datensätze aus
4294967296 bytes (4,3 GB, 4,0 GiB) copied, 39,1345 s, 110 MB/s

现在让我们仔细看看 samba:

在上面基准测试的磁盘上将1 GB 文件写入samba共享大约73 MB/s,CPU 使用率仅为 70% 左右。

从samba共享中读取1 GB 文件的速度仅为64 MB/s左右,CPU 使用率约为 55%。还要看这张图:它开始缓慢,然后速度上升和下降,产生某种波形。

在此处输入图像描述

立即再次复制此文件,当它在缓存中时,它会以112 MB/s 的速度复制,因此应有全 GigabitEthernet 速度。


与未加密的驱动器相比:

dd 写入速度133 MB/s

dd 读取速度207 MB/s

Samba 写入:112 MB/s

Samba 读取速度:112 MB/s


所以单独使用LUKS加密就可以提供足够的速度,单独使用Samba也有足够的速度。结合起来,性能会大幅下降,而仅使用 dd 时仍有大量可用的 CPU 资源可用。

这里有什么问题?为什么在使用 dd 对 samba 进行操作时,CPU 没有完全使用?可以做些什么来使用 smb 和 luks 加密来获得完整的性能/CPU 使用率?

performance samba performance-tuning cpu-usage luks
  • 1 个回答
  • 680 Views
Martin Hope
alkalinecoffee
Asked: 2020-10-07 12:36:12 +0800 CST

为什么大多数 ulimit 建议都要求将文件描述符限制设置为 65535?

  • 1

在搜索最大文件描述符ulimit调整建议时,许多站点建议将文件描述符大小设置为 65535。在某些情况下,它的 100000、120000 甚至更高。其中一些帖子可以追溯到 20 年前。

对于某些帖子,我确信这是一个任意值。但似乎对这些值有很多建议,尤其是 65535。为什么这么多博客文章和服务器调优文档建议将最大文件描述符设置为 65535 之类的东西?从表面上看,它似乎是一个任意值。是因为历史原因吗?

linux performance-tuning linux-networking
  • 1 个回答
  • 713 Views
Martin Hope
Deepak
Asked: 2020-07-11 00:38:57 +0800 CST

如何对 Apache 服务器进行性能调优?

  • 0

我们有一个 apache 服务器 2.4.X,我们在一个 Java Application 前面用作反向代理。我们启用了 Apache 状态模块Apache Status并且我们能够看到空闲工作线程的数量将始终为零,因此我们的应用程序的性能很差。我们的托管服务器有32 个内核和 64 GB 的 RAM。我们正在使用 Apache 的 mpm_worker 模块。Apache mpm_worker。我们当前的 mpm_worker 配置是:

 <IfModule mpm_worker_module>
    ServerLimit            150
    StartServers             8
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadsPerChild         25
    MaxRequestWorkers      150
    MaxConnectionsPerChild   10000
</IfModule>

.我们浏览了Apache 性能调优文章,发现根据我们的服务器配置,我们可以有2930 个请求工作人员。我的问题是。

  1. 将MaxRequestWorkers单独更改为 2930 会起作用吗?

  2. 我们还需要更改ThreadsPerChild 吗?

  3. 代表 Apache 子进程的StartServers也需要更改/或者我们是否也可以根据我们的服务器配置更改它以获得最佳性能。

  4. 更新后的MaxRequestWorkers案例的ServerLimit值应该是 2930 是多少?

performance performance-tuning apache-2.4
  • 1 个回答
  • 1698 Views
Martin Hope
Javier Diaz Charles
Asked: 2020-05-08 19:48:11 +0800 CST

如何确定 HugePages 计数?

  • 0

我有许多服务器用作 KVM 管理程序节点。我们希望启用大页面并利用此功能解决与性能相关的问题。

我在网上查看了如何启用大页面,这非常清楚和简单,但我找不到的是如何确定应该使用的大页面计数值。

为了给您一些观点,这是我们拥有的系统(在整个集群中相同):

$ free -g
              total        used        free      shared  buff/cache   available
Mem:            503           5         497           0           1         495
Swap:             0           0           0

我们希望启用大小为 1GB 的巨页,但巨页数是我们不知道如何定义的。这个数字是如何确定的,是否基于内存,任何输入都将不胜感激。

有问题的配置:

GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX hugepagesz=1G hugepages=<what goes here> transparent_hugepage=never"
linux kvm-virtualization kernel performance-tuning openstack
  • 1 个回答
  • 594 Views
Martin Hope
execash
Asked: 2020-05-08 11:14:57 +0800 CST

cloudflare 背后的产品导入中断

  • 0

我无法解决我的数据库错误以及如何优化它。由于我的服务器运行缓慢(我相信主要是查询),我的导入出现了 cloudflare 错误代码。(我记得,Cloudflare 阻止连接超过 15 秒)

需要建议修复它们。

我在 GCP 上托管我的 wordpress 网站,带有 1 个 vcpu、4gb ram、20gb ssd。我使用 OpenLiteSpeed 网络服务器、php 7.4.4、mariadb 15.1。建立一个附属网络站点。在谷歌云存储中托管图像。导入速度有问题。获得超过 50 万种产品。勉强进口20万左右。现在我什至无法一一导入或通过后端进行任何其他编辑。最大尺寸的 xml 带有 100k 的产品,这些产品卡在 96k 并且不能继续移动。

我的数据库大小现在是 3.5gb,有 200k 个产品。+500k 产品将是它的两倍。

这是我的 mysql 日志和慢日志、my.cnf 设置、mysqltuner 建议和全局变量。

今天早上,我意识到在设置跳过名称解析后我没有授予 [email protected] 的权限,我做到了,我猜我只是收到了 1 个 mysql 错误。

因为 mysqltuner 每天都在提供增加已安装 ram 的数量,所以我将所有 innodb 表转换为 myisam。

我也在寻找使用 wp_postmeta 和 wp_posts 表的索引的帮助。

Preciate 谁有助于解决这些问题。多谢。

MY.CNF https://gist.github.com/execash/d2add8445e48c26b3e369b18bcf8a18e

MySql 错误日志https://gist.github.com/execash/1870e016c5b4794de3a81bc8635d76f9

超过 2 秒的慢日志https://gist.github.com/execash/30fbdeb7650a824e140ead3080fa1931

全局变量https://gist.github.com/execash/b6b241b5dc607e6f99b322debd1bb11a

全局状态https://gist.github.com/execash/604e2b9625f41d31ce9870eda3935ed5

mysqltuner 输出https://gist.github.com/execash/aa269f91b5b08d1a4609d5c03d75916a

mysql optimization wordpress performance-tuning mariadb
  • 1 个回答
  • 86 Views
Martin Hope
Mohammad Hedayati
Asked: 2018-04-07 07:35:36 +0800 CST

双端口 RDMA 吞吐量问题

  • 2

我有两个节点通过 IB 交换机与双端口 Mellanox Connext-X3 VPI HCA 连接。这些节点是两个插槽机器,每个插槽带有 Hasswell CPU 和 2 个 16GB DIMM(总计 64GB)。一切似乎都很完美,除了看起来不正确的性能数字。

当我运行ib_read_bw基准测试时:

server# ib_read_bw --report_gbits
client# ib_read_bw server --report_gbits

---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
 65536      1000             37.76              37.76          0.072016
---------------------------------------------------------------------------------------

但是当我运行双端口时:

server# ib_read_bw --report_gbits -O
client# ib_read_bw server --report_gbits -O
---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[Gb/sec]    BW average[Gb/sec]   MsgRate[Mpps]
 65536      2000             52.47              52.47          0.100073
---------------------------------------------------------------------------------------

我只得到了不到 40% 的改进(我错误地期望约 2 倍单端口带宽)?

我不知道这里的瓶颈是什么以及如何找到它。

其他可能有用的配置:

  • 每个socket有8个核心,每台机器总共有32个HT
  • 每个 DIMM 提供 ~14GB/s bw(每个插槽 mem-bw:~28 GB/s,总体 ~56 GB/s)
  • 我使用 Mellanox 的 Auto Tuning Utility 工具来调整中断。
  • IB 链路是 4X 10.0 Gbps (FDR10) -- 每个 40 Gb/s
  • 我正在使用 Mellanox OFED 4.3。
performance-tuning
  • 2 个回答
  • 578 Views
Martin Hope
michi.0x5d
Asked: 2017-02-24 06:13:49 +0800 CST

如何创建非缓存快速 nginx 反向代理?

  • 0

Nginx 应该很快——至少人们这么说。

我无法快速获得 nginx。对于基准测试,我使用siege多种配置来模拟高负载。所以我尝试对单个服务器进行负载平衡(我知道对单个服务器进行负载平衡是相当无用的,但对于测试负载平衡器本身这是有效的)。我已经设置了一个已经优化的 apache 反向代理作为参考。当我尝试从同一个后端服务器获取相同的 - 未缓存的 - 文件时,我通过 nginx 获得大约 80tps,使用 apache 获得大约 350tps。当然硬件/操作系统是一样的(当前双核cpu,2G ram,Ubuntu Server 16.04)。

我已经尝试更改工作人员、最大连接数、轮询方法、代理缓冲区大小、等待时间和客户端缓冲区。我可以看到系统负载很低,一个 nginx 使用大约 1% 的 CPU,连接将等待大约 5 到 6 秒。因为我想测量反向代理的性能,所以我不想在这个测试中缓存任何东西。

那么问题来了:如何优化 nginx 作为非缓存反向代理的性能?

攻城命令示例:siege -c 100 -b -r 100 -v <loadbalancer>/favicon.ico

更新:根据要求进行一些配置。为了保持 serverfault-conform 的问题,请回答关于参数有用的一般性问题。

user www-data;
worker_processes 2;
pid /run/nginx.pid;
#thread_pool default threads=1500 max_queue=65536;
worker_rlimit_nofile 40000;

events {
    worker_connections 768;
    #multi_accept on;
    #use epoll;
}

http {

    #aio threads=default;
    #proxy_buffers           32 4m;
    #proxy_busy_buffers_size     25m;
    #proxy_buffer_size 512k;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    access_log /var/log/nginx/access.log combined buffer=1k;
    error_log /var/log/nginx/error.log;

    gzip off;
    # gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    upstream kronos-backend {
        server kronos.example.com;
    }

    server {
        listen 80;
        listen [::]:80;

        ssl_certificate     /etc/ssl/certs/snakeoil.crt;
        ssl_certificate_key /etc/ssl/private/snakeoil.key;

        listen 443 ssl;
        listen [::]:443 ssl;

        keepalive_timeout 60;

        root /var/www/vhosts/default;

        index index.html;

        server_name <name>;

        server_tokens off; # Don't show that nginx is bringing out the website.

        location / {
            proxy_set_header Host            <name>;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_pass http://kronos-backend;

            client_body_buffer_size 1M; # Lets keep all client-sent bodies in memory if less than 1 Megabyte. (Default for amd64: 16K)
            client_max_body_size 10M; # Maximum accepted body is 10M (Default is 1M).
        }
    }
}

这个配置不是很干净,我知道。但它或多或少地显示了我已经尝试过的东西。它源自 Ubuntu 中 nginx-package 的默认配置。

连接采用以下方式:

       +--- apache2 ---+
       |               |
siege -+               +--> some webserver (not of interest)
       |               |
       +--- nginx -----+

因此,通过 nginx 或 apache2 传输的数据无关紧要,只要不涉及缓存并且使用相同的 url(在本例中为静态文件)进行测试。缓存机制不是在任何网络服务器上有意激活的。

apache 中的配置使用 mpm_worker。

ThreadLimit          600
StartServers         4
ServerLimit          11
MinSpareThreads      50
MaxSpareThreads      100
ThreadsPerChild      200
MaxClients           1000
MaxRequestsPerChild  20000

上述围攻命令的示例输出:

$ siege -c 100 -b -r 10 <nginx>/wrapper_2_bg.png
** SIEGE 3.0.5
** Preparing 100 concurrent users for battle.
The server is now under siege..      done.

Transactions:                   1000 hits
Availability:                 100.00 %
Elapsed time:                  11.01 secs
Data transferred:               0.12 MB
Response time:                  0.84 secs
Transaction rate:              90.83 trans/sec
Throughput:                     0.01 MB/sec
Concurrency:                   76.24
Successful transactions:        1000
Failed transactions:               0
Longest transaction:            6.67
Shortest transaction:           0.03


$ siege -c 100 -b -r 10 <apache>/wrapper_2_bg.png
** SIEGE 3.0.5
** Preparing 100 concurrent users for battle.
The server is now under siege..      done.

Transactions:                   1000 hits
Availability:                 100.00 %
Elapsed time:                   3.16 secs
Data transferred:               0.12 MB
Response time:                  0.22 secs
Transaction rate:             316.46 trans/sec
Throughput:                     0.04 MB/sec
Concurrency:                   68.95
Successful transactions:        1000
Failed transactions:               0
Longest transaction:            3.06
Shortest transaction:           0.05
nginx reverse-proxy performance-tuning
  • 1 个回答
  • 1558 Views
Martin Hope
Alex Hirzel
Asked: 2017-01-16 07:40:48 +0800 CST

在 ZFS 上调整电子邮件备份数据集

  • 2

我有一个充满电子邮件备份文件的文件夹(来自offlineimap)。一个这样的文件夹有 87k 文件,其中 68k 大小在 512-1024 字节之间。(这个文件夹非常具有代表性。)整个大小分布如下所示:

Size bin    % by count  % by space
512         0.08%       0.00%
1024        77.37%      74.58%
2048        1.65%       1.62%
4096        3.92%       4.05%
8192        6.11%       6.78%
16384       3.68%       4.25%
32768       3.07%       3.66%
65536       1.77%       2.15%
131072      0.75%       0.92%
262144      0.36%       0.44%
524288      0.33%       0.41%
1048576     0.30%       0.37%
2097152     0.21%       0.27%
4194304     0.20%       0.25%
8388608     0.11%       0.14%
16777216    0.08%       0.10%

我的问题是:用于此数据的最佳记录大小是多少?我很想 1k 但这比正常的推荐值要小得多,而且我担心元数据的开销。

我已经阅读了一些涉及此的文章,但没有得出任何结论。例如,一篇文章检查了使用小于平均文件大小的记录的存储效率。他的平均最小文件大小为 128k,他发现通过压缩,存储效率随着块大小从 512 增加到 128k 而提高,但他没有测试大于他的文件的块大小,因此整个趋势尚不清楚。

另一个很好的读物是这个 reddit 线程,它描述了记录和块大小之间的差异,并进入了 SSD 性能调整。

filesystems zfs performance-tuning
  • 2 个回答
  • 197 Views
Martin Hope
Wexiwa
Asked: 2016-10-07 02:06:35 +0800 CST

Zabbix:如何使用活动项目实现 1s 间隔?

  • 1

甚至可能/推荐吗?

我们正在尝试设置一些配置为 1 秒间隔的活动项目。然而,这些项目并没有保持所需的间隔,而是我们大约每 30 秒收集一个值(如相应图表所示)。

在客户端使用简单的“echo 1”作为用户参数来测试上述内容,它应该每 1 秒发送一次,没有延迟,但不是。我们在服务器本身上部署了一个客户端,其配置方式与上述相同,每秒成功收集一次。

我们的 Zabbix 设置相对较新,因此底层 MySQL 数据库相当小,我们没有那么多客户端/项目。服务器在 Linux VM 中运行,客户端在专用 Linux 主机上(而不是在本地网络上)。

我们查看了服务器/客户端上的配置文件,但没有看到什么可以帮助我们实现这一点(除了添加更多的陷阱)。这似乎不是连接问题,因为客户端缓冲区应该克服这个问题。

  • 这种行为的原因可能是什么?
  • 如何找到瓶颈?通过Zabbix 服务器统计可以看到什么?
  • 硬件是最重要的因素吗?
  • MySQL优化是强制性的吗?

无法发布更多链接,因此我们查看了以下内容:

  • Zabbix 参考手册中的性能调优页面
  • Alexei Vladishev zabbix 性能调整幻灯片(在 slideshare 上找到)
performance performance-tuning database-performance zabbix zabbix-agent
  • 1 个回答
  • 1953 Views
Martin Hope
KDX
Asked: 2016-08-13 01:49:47 +0800 CST

如何调优 Nginx + MySQL + PHP-FPM 瓶颈以解决服务器高负载?

  • -1

我的服务器 Ubuntu 14.04.4 LTS 以高负载运行,目前运行一个带有 Nginx + Wordpress + W3 Total Cache + Memcached 的站点。

我不确定是否mysql会导致工作量问题。

这是和的屏幕htop截图mytop

我可以从中htop看出内存不是这里的瓶颈。

它表明mysqld并且php-fpm是使用最高资源的进程。

有人能告诉我如何解释mytop吗?它看起来正常吗?

1  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||93.6%]     Tasks: 361, 71 thr; 12 running
2  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||95.6%]     Load average: 19.52 22.34 19.45 
3  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||97.5%]     Uptime: 71 days, 08:54:08
4  [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||96.8%]
Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||5570/8015MB]
Swp[                                                                         0/0MB]

MySQL on localhost (5.7.13)
load 23.92 23.12 19.55 43/528 10012 up 7+04:05:52 [05:30:09]
Queries: 103.6M   qps:  175 Slow:  0.0  Se/In/Up/De(%):  79/00/00/00 
Sorts:  8693 qps now:  356 Slow qps: 0.0  Threads:  37 (   1/   3) 79/00/00/00 
Key Efficiency: 50.0%  Bps in/out: 28.8k/532.7k   Now in/out: 57.6k/880.7k

还是我应该考虑使用 fastcgi_cache 来避免命中 php-fpm?

更新:

我尝试重新启动我的所有服务、Nginx、PHP-FPM 和 MySQL。

我在一个流量相当高的网站上工作,每天浏览量为 110 万次。

重新启动所有服务后,资源再次快速上升。

在非高峰时段,我的 4 核机器上的负载值最大约为 4.00。

在高峰时段,负载在 20 到甚至 40 之间。

mysql cache wordpress performance-tuning bottleneck
  • 1 个回答
  • 2115 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve