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
    • 最新
    • 标签
主页 / user-35483

symcbean's questions

Martin Hope
symcbean
Asked: 2024-03-06 18:22:58 +0800 CST

Postfix - 无法限制活动队列

  • 6

我发送电子邮件的目的地之一具有不寻常的性能特征。活动队列可能会填满该域的消息,从而阻止发送到其他域。我想限制该域使用的活动队列中的插槽数量。

作为临时措施,该域的流量通过专用中继进行路由,我在其中设置:

default_recipient_refill_limit=50
default_recipient_limit=1000

活动队列大小的上限仍然是默认的 20000。按照上面修改 main.cf 后,我运行了 apostfix check和systemctl reload postfix。日志显示重新加载事件。

然而,我的监控显示,几个小时后,Active队列在2分钟的窗口内跃升至20000。即消息的速率和上限似乎都没有被应用。它在20000处保持了几分钟。

监控是通过 check_MK 进行的 - 虽然我很容易相信它可能报告了传入队列和活动队列的计数,但 20000 处的稳定状态表明情况并非如此。

我在这里缺少什么?/ 如何限制消息从传入状态转移到活动状态的数量或速度?

(我需要一个可以使用自定义传输实现的解决方案,以便我可以通过共享中继将流量移回)。

这是在 Amazon Linux 2 上运行的 Postfix 2.10,MTA 上没有配置将在活动队列中扩展的通讯组列表。请注意,我不是在问如何更快地将邮件传递到该域 - 我是在问如何限制活动队列中关联邮件的数量。

postfix
  • 1 个回答
  • 49 Views
Martin Hope
symcbean
Asked: 2023-08-04 19:50:35 +0800 CST

mod_rewrite 配置未排除路径

  • 5

我正在尝试滚动我自己的虚拟主机配置来处理 certbot/letsencrypt。我想将除请求之外的任何内容重定向到 /.well-known 到 HTTPS。但 .wellknown 的例外情况不起作用;对http://www.example.com/.well-known/的请求返回 301 重定向到 https。我已在下面的代码中对主机名进行了匿名化处理。

请注意,我在此处发布之前遇到了这篇文章/答案- 并且那里接受的答案描述了(我相信)我在下面尝试过的第一个配置 - 这让我认为这不是重复的。

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName www.example.com

    RewriteEngine on
    RewriteCond %{HTTPS} !=on
    # RewriteRule ^(\.well-known) - [END]
    RewriteCond %{REQUEST_URI} !^\.well-known
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

    # additional auth config elsewhere, hence....
    <Location /.well-known/ >
        Require all granted
    </Location>
</VirtualHost>

正如上面的注释行所示,我也尝试过:

    RewriteRule ^(\.well-known) - [END]
    # RewriteCond %{REQUEST_URI} !^\.well-known
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

路径上没有 .htaccess 文件,但为了确保这一点,我禁用了所有重写指令,并获得了 /.well-known/ 和其他请求的 HTTP 200 响应。我正在使用curl -I301 的浏览器缓存进行测试,因此不需考虑。每次更改后,我都会完全重新启动 httpd,而不仅仅是重新加载。

这是 Centos 7 上的 httpd-tools-2.4.6-99。

如何覆盖默认重定向?

apache-2.4
  • 2 个回答
  • 23 Views
Martin Hope
symcbean
Asked: 2021-05-06 03:43:25 +0800 CST

模拟 rsync - 在不修改文件的情况下找出需要传输多少数据

  • 0

我正在寻找跨存储复制我的一些备份,并试图研究如何以最少的 I/O 和网络流量来做到这一点。这对我需要出去购买哪些硬件有一定的影响——所以到目前为止我还不能通过进行实际转移来进行实验。但是,我确实在主存储上有一系列完整备份,我可以比较(但不能覆盖)。

有没有办法运行 rsync 以报告它在不实际写入数据的情况下传输的数据量?

rsync
  • 1 个回答
  • 248 Views
Martin Hope
symcbean
Asked: 2020-12-16 13:51:25 +0800 CST

nginx重写查询未触发

  • 1

我可能遗漏了一些明显的东西——但我不知道它是什么。这可能是重复的;我已经阅读了关于 nginx 重写的数百个操作系统问题 - 但它们似乎与我的用例不匹配。

我要解决的问题是为 CAS 实施一种解决方法,其中客户端应用程序告诉 CAS 返回 URL 是 HTTP,而实际上它的 HTTPS。服务器端设法解决了这个问题,直到 Google 决定发布对 https->http 重定向感到不安的 v87。因此,我试图更改发送到 CAS 的 URL。我想在查询中用“https”替换“http”,例如

https://cas.example.com/cas/login?service=http:%2F%2Fapp.example.com/

should be re-written as

https://cas.example.com/cas/login?service=https:%2F%2Fapp.example.com/

这是我的配置

location / {
            ## this one works....
            # rewrite /foo/(.*) /$1 break;

            ## these don't....
            # rewrite ^([^\?]+)\?service=http:(.*)$ $1?service=https:$2 break;
            # rewrite ^([^\?]+)\?service=http%(.*)$ $1?service=https%$2 break;
            rewrite /(.*)vice=http:(.*) /$1vice=https:$2 break;
            rewrite /(.*)vice=http%(.*) /$1vice=https%$2 break;
            rewrite /(.*)vice=http(.*) /colin.bip?f=$1vice=other$2 break;
            rewrite /(.*)foo(.*) /$1bar$2 break;

(此服务器中没有其他位置块)。

当我说其他人不起作用时,我的意思是 URL 没有改变。

当我在单独的 PCRE 实现中测试正则表达式时,它们似乎可以正确解析 URL,但似乎没有在我的 nginx 配置中触发。

更新 我启用了重写日志记录 - 并且重写似乎忽略了查询部分?

 *1 "/(.*)foo(.*)" does not match "/url.php", client: 10.1.1.7, server: example.com, request: "GET /url.php?q=foo&service=http://hello HTTP/1.1"

我可以说服 nginx 也重写查询吗?

rewrite nginx
  • 1 个回答
  • 155 Views
Martin Hope
symcbean
Asked: 2020-07-07 02:03:17 +0800 CST

高效复制存储

  • 8

我想在 WAN 上复制 10Tb 的数据(大量小文件,低水平的流失),而对可用基础架构的影响最小。

虽然我可以简单地使用 rsync,但这意味着查找更改并比较本地和远程数据(磁盘 I/O、网络带宽和 CPU 成本)虽然 rsync 可以有效地做到这一点,但我想知道是否有更有效的解决方案可以跟踪更改并传播它们(最好是双向的)。

存储本身是 HP NAS 设备上的 iSCSI。我们之前曾研究过使用其内置的复制功能,但发现它们速度慢且不可靠。

DRBD 镜像在两端都需要额外的硬件。这将是相当昂贵的。过去,我也被 DRBD 复制失败所困扰。

glusterfs 会更有效吗?使用 2 节点设置真的很愚蠢吗?有更好的解决方案吗?

linux replication storage
  • 4 个回答
  • 358 Views
Martin Hope
symcbean
Asked: 2020-05-09 07:55:47 +0800 CST

Awstats + Postfix 日志 - 没有发件人/收件人?

  • 0

我正在尝试配置 awstats(来自 Ubuntu 18.04 上的 repo 的 v7.6)来处理后缀日志文件。但是我没有太多的日志数据可以使用。Awstats 报告它已经处理了数据并且摘要显示了预期的消息数量和累积大小,但是详细信息(我特别需要发件人列表)是空白的。

配置的相关部分:

LogFile="/usr/local/bin/maillogconvert.pl standard </var/log/mail.log.1 |"
LogType=M
LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
ValidSMTPCodes="1 250"
ShowEMailSenders=HBML
ShowEMailReceivers=HBML
ShowSMTPErrorsStats=1
MaxNbOfDomain = 10
MinHitDomain  = 1
MaxNbOfEMailsShown = 200
MinHitEMail   = 1

在摘要和详细信息页面上,Awstats 显示发件人和收件人的计数均为 0/未列出任何帐户。

这似乎是一个显示问题,因为数据文件包含预期的详细信息:

BEGIN_EMAILSENDER 1
user@example.com 20 29105 20200430151927
END_EMAILSENDER

HTML 是动态生成的,而不是保存的报告。上面摘录中的数据已被匿名化。

log-files smtp awstats
  • 1 个回答
  • 282 Views
Martin Hope
symcbean
Asked: 2020-03-31 06:06:02 +0800 CST

systemctl 限制 - solr 抱怨

  • 1

我正在构建一个 solr 服务器(在 Ubuntu 18.04 上,使用 repo solr-common 和 solr-jetty)。启动时,solr 报告 nfile 和 nproc (1024, 6721 resp) 设置得太低。我运行systemctl edit solr并创建了一个覆盖,如下所示:

[Service]
LimitNOFILE=65000
LimitNPROC=65000

然后我重新启动了服务 - solr 仍然报告同样的问题。

我添加了 /etc/security/limits.d/solr 包含:

solr hard nofile 65535
solr soft nofile 65535
solr hard nproc 65535
solr soft nproc 65535

重新启动服务后仍然报告相同的问题:

# systemctl status solr
● solr.service - LSB: Controls Apache Solr as a Service
   Loaded: loaded (/etc/init.d/solr; generated)
  Drop-In: /etc/systemd/system/solr.service.d
           └─override.conf
   Active: active (exited) since Mon 2020-03-30 14:55:49 BST; 6s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 6848 ExecStop=/etc/init.d/solr stop (code=exited, status=0/SUCCESS)
  Process: 6973 ExecStart=/etc/init.d/solr start (code=exited, status=0/SUCCESS)

Mar 30 14:55:43 dev-a01-si-solr.bip solr[6973]: *** [WARN] *** Your open file limit is currently 1024.
Mar 30 14:55:43 dev-a01-si-solr.bip solr[6973]:  It should be set to 65000 to avoid operational disruption.
Mar 30 14:55:43 dev-a01-si-solr.bip solr[6973]:  If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
Mar 30 14:55:43 dev-a01-si-solr.bip solr[6973]: *** [WARN] ***  Your Max Processes Limit is currently 6721.
Mar 30 14:55:43 dev-a01-si-solr.bip solr[6973]:  It should be set to 65000 to avoid operational disruption.
Mar 30 14:55:43 dev-a01-si-solr.bip solr[6973]:  If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
Mar 30 14:55:49 dev-a01-si-solr.bip solr[6973]: [194B blob data]
Mar 30 14:55:49 dev-a01-si-solr.bip solr[6973]: Started Solr server on port 8983 (pid=7045). Happy searching!
Mar 30 14:55:49 dev-a01-si-solr.bip solr[6973]: [14B blob data]
Mar 30 14:55:49 dev-a01-si-solr.bip systemd[1]: Started LSB: Controls Apache Solr as a Service.

我在这里做错了什么?

更新 修改 /etc/systemd/system.conf 以包含...

DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000

Solr 不再抱怨文件限制,但仍在抱怨进程限制。WTF波特林?

  Drop-In: /etc/systemd/system/solr.service.d
           └─override.conf
   Active: active (exited) since Mon 2020-03-30 15:21:59 BST; 14s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1141 ExecStart=/etc/init.d/solr start (code=exited, status=0/SUCCESS)

Mar 30 15:21:51 dev-a01-si-solr.bip solr[1141]:  If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
Mar 30 15:21:51 dev-a01-si-solr.bip solr[1141]: *** [WARN] ***  Your Max Processes Limit is currently 6721.
Mar 30 15:21:51 dev-a01-si-solr.bip solr[1141]:  It should be set to 65000 to avoid operational disruption.
Mar 30 15:21:51 dev-a01-si-solr.bip solr[1141]:  If you no longer wish to see this warning, set SOLR_ULIMIT_CHECKS to false in your profile or solr.in.sh
Mar 30 15:21:51 dev-a01-si-solr.bip solr[1141]: Warning: Available entropy is low. As a result, use of the UUIDField, SSL, or any other features that require
Mar 30 15:21:51 dev-a01-si-solr.bip solr[1141]: RNG might not work properly. To check for the amount of available entropy, use 'cat /proc/sys/kernel/random/entropy_avail'.
Mar 30 15:21:59 dev-a01-si-solr.bip solr[1141]: [230B blob data]
Mar 30 15:21:59 dev-a01-si-solr.bip solr[1141]: Started Solr server on port 8983 (pid=1459). Happy searching!
Mar 30 15:21:59 dev-a01-si-solr.bip solr[1141]: [14B blob data]
Mar 30 15:21:59 dev-a01-si-solr.bip systemd[1]: Started LSB: Controls Apache Solr as a Service.

修改 user.conf 以匹配没有帮助。

更新 2 好吧,这只会越来越好。重新启动主机后,nfile 警告消失了。当我随后运行时,systemctl restart solr我得到了这个:

Mar 30 15:39:21 dev-a01-si-solr.bip solr[2503]: *** [WARN] *** Your open file limit is currently 1024.
Mar 30 15:39:21 dev-a01-si-solr.bip solr[2503]:  It should be set to 65000 to avoid operational disruption.

FFS!

现在,我把 Centos 5 CD 放在哪里了?

更新 3

事实证明,这不再是打包好的 solr。我不知道,有人在使原始版本正常工作时遇到问题,并在互联网上找到了有关如何从 tarball 安装的教程。所以我现在有一个半 tarball/半 repo solr 的系统,我们无法修补/升级。

ubuntu limits systemd
  • 1 个回答
  • 3245 Views
Martin Hope
symcbean
Asked: 2020-01-25 02:45:26 +0800 CST

vmware vmids 在 ESX 重新启动后是否仍然存在?

  • 1

我有一个 2 节点 VMWare 集群(Simplivity),我计划对其进行一些硬件维护(即关闭它们)。因此,我想彻底关闭 VM 来宾,然后将它们带回来。有相当多的来宾正在运行(~200),因此通过 vsphere 手动执行此操作需要相当长的时间。这与启动中的依赖关系有些复杂,需要对启动进行排序。因此,我希望通过命令行使用....

vim-cmd vmcsv/power.shutdown <vmid>
...
vim-cmd vmcsv/power.on <vmid>

我运行了一个停止和启动 VM 的测试用例。通过 CLI,它很有效,但是当我尝试通过 vsphere 启动 VM 时,VMware 决定在之前运行的另一个节点上启动它,并为其分配一个新的 vmid。

虽然我可以在 VM 运行时识别 vmid,但在我重新启动 ESX 主机后会发生什么?我之前捕获的 vmid 是否仍会引用虚拟机?或者我是否需要找到一种不同的方式来识别和启动它们?

(我会问 HPE——但我最近 3 次联系他们的建议是灾难性的错误)

vmware-esx vmware-vsphere
  • 1 个回答
  • 58 Views
Martin Hope
symcbean
Asked: 2019-10-11 06:02:48 +0800 CST

openfortivpn 杀死了我的路线

  • 1

我正在尝试使用 openfortivpn 进行连接。以前我一直在 MS-Windows 上使用 Fortinet VPN 客户端 - 现在每次尝试启动它时都会出现蓝屏(我正在下载升级版本,但出于其他原因想在 Linux 上配置它)。

我连接的基础设施有很多子网,其中一些与我的本地子网冲突。因此,使用默认设置 (--set-routes=1) 它会覆盖我的本地路由,并且盒子会断开与本地网络的连接。命令行选项似乎只允许一切或不允许。

我能够捕获启动时正在应用的配置并自动配置路由。Cherry 选择相关条目并尝试应用它们(在使用 --no-routes 重新启动 VPN,然后手动记录 IP 地址后)导致连接正常。

ip route add to 10.0.99.0/255.255.255.0 via 10.220.136.94 dev ppp0

但是每次连接时本地地址都会改变;我不能将其用作脚本中的文字值。

我如何编写脚本让它自动发生?

openfortivpn的手册页提到了一些控制路由的环境变量——但是输入

 "VPN_ROUTE_GATEWAY" openfortivpn

进入 Google 只是给了我指向 openfortivpn 源代码的链接(而且我对 C 的了解太生疏了,无法对其进行逆向工程)。

linux
  • 1 个回答
  • 1698 Views
Martin Hope
symcbean
Asked: 2019-09-28 04:15:00 +0800 CST

nginx反向代理选择性缓存

  • 1

我有 nginx 作为反向代理运行。目前,这仅提供集中式 SSL 终止和互联网连接。我想为静态内容启用缓存。

代理上虚拟主机的配置看起来像......

server {
   listen 443 ssl http2;
   server_name www.example.com;
   ...
   location / {
       include snippets/proxydefaults.conf;
       proxy_pass http://www.example.com.origin/;
   }
}

我不确定源服务器上的缓存是否正确设置,因此我只想缓存我知道是静态文件的东西。如果我嵌套缓存配置,是否需要重复配置以应用代理,或者这是从父位置继承的......

server {
   listen 443 ssl http2;
   server_name www.example.com;
   ...
   location / {
       include snippets/proxydefaults.conf;
       proxy_pass http://www.example.com.origin/;
       location ~* \.(gif|png|jpg|jpeg|js|css)$ {
           proxy_cache default_cache;
           # do I need to explicitly add another proxy_pass directive here?
       }
   }
}
nginx
  • 2 个回答
  • 128 Views
Martin Hope
symcbean
Asked: 2019-07-18 06:32:45 +0800 CST

Exim - defer (-53): 没有达到任何主机的重试时间

  • 0

我是一个 exim 新手 - 并且继承了一个运行不正常的 exim 的系统。

我的实例已停止发送电子邮件。它正在接受队列中的消息,并且正在运行-q1h- 每小时,对于队列中的每条消息,它都会报告...

defer (-53): retry time not reached for any host

它被配置为使用高度可用的智能主机——所以这不是远程 MTA 的问题。实际上exim -v,从命令行运行以发送电子邮件,它会立即传递给智能中继。即,路由、身份验证、可用性没有问题。Exim 根本不尝试转发这些电子邮件。

我看到很多人说解决此问题的方法是通过仅删除锁定文件或锁定文件和重试数据库来重置重试数据库。这两种方法都对我的 mailq 没有任何影响。

注意,这不是失败后的重试——exim 从未尝试传递消息。

重试配置默认为:

begin retry
* * F,2h,15m; G16h,1h,1.5; F,4d,6h

我想这-q1h就是它没有立即尝试转发消息的原因。但是为什么它不从队列中提取消息呢?

由于这是移交给智能中继,因此我无需备份一个小时的消息。如果我从选项中删除 -q1h,exim 会继续定期扫描队列还是忽略它?

smtp
  • 2 个回答
  • 3028 Views
Martin Hope
symcbean
Asked: 2019-02-07 08:45:39 +0800 CST

Tomcat 向某些主机返回 400 错误

  • 1

我最近从 Tomcat 8.0 升级到 8.5

自升级以来,来自其他子网的主机对请求的响应为 400,但在同一子网上,应用程序运行时没有错误 (!)

127.0.0.1 - - [06/Feb/2019:09:17:58 +0000] "GET /app/login.jsf HTTP/1.1" 200 5976
...
10.60.255.86 - - [06/Feb/2019:10:24:19 +0000] "GET /app/login.jsf HTTP/1.1" 400 –
...
fe80:0:0:0:e85f:958:813c:dee%12 - - [06/Feb/2019:10:25:53 +0000] "GET /app/login.jsf HTTP/1.1" 200 5975
...

(IPv6 地址是本地机器)

server.xml 中没有 RemoteIpValve 设置,context.xml 中没有 RemoteAddrValve。

我还应该去哪里寻找?这是默认行为吗?

tomcat
  • 1 个回答
  • 1157 Views
Martin Hope
symcbean
Asked: 2017-11-30 13:51:05 +0800 CST

Mariadb 的意外身份验证

  • 0

以前在 Linux 上广泛使用过 MySQL,我相当有信心在这个 Mint 18.1 (Ubuntu) 机器上安装 MariaDB (10.0.31) 会很容易。安装就是这样。

但奇怪的是,它现在似乎知道我什么时候在撒谎。以前在 Redhat、Suse、PCLinixOS 上使用 MySQL ......我可以通过断言我是 root 登录到配置了 root@localhost 的空白密码(即使用 AF_UNIX 套接字)的 mysqld,但这在我的 Mint 上不起作用/玛丽亚数据库:

 symcbean@animal ~ $ mysql -u root
 ERROR 1698 (28000): Access denied for user 'root'@'localhost'

但是,如果我“su”,这确实有效:

 symcbean@animal /etc $ su
 Password: 
 animal etc # mysql
 Welcome to the MariaDB monitor.  Commands end with ; or \g.
 Your MariaDB connection id is 47
 Server version: 10.0.31-MariaDB-0ubuntu0.16.04.2 Ubuntu 16.04

 Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 MariaDB [(none)]> select current_user;
 +----------------+
 | current_user   |
 +----------------+
 | root@localhost |
 +----------------+
 1 row in set (0.00 sec)

(与mysql -u root,相同mysql -u root -h localhost)。

我的非 root 用户对套接字文件具有权限:

 symcbean@animal ~ $ ls -l /var/run/mysqld/mysqld.sock 
 srwxrwxrwx 1 mysql mysql 0 Nov 29 20:46 /var/run/mysqld/mysqld.sock

我的 root 用户没有 ~/my.conf 或 ~/.my.cnf 来保存密码。

我没有运行不安全系统的习惯——但我对这种明显的行为变化感到困惑。服务器真的验证客户端的uid吗?

linux
  • 1 个回答
  • 154 Views
Martin Hope
symcbean
Asked: 2016-06-22 01:15:56 +0800 CST

DNS 服务器如何响应丢失的粘合记录?

  • 1

我目前正在我的工作地点对 DNS 服务进行一些基准测试。这引发的较大异常之一是大量域,在某些情况下,查找返回 NXDOMAIN 响应,而在其他情况下,我得到对 MX 查找的有效响应。

(有问题的域是外部的)

虽然这可能是由于一对权威服务器之间的配置差异造成的,但我意识到当我尝试解析没有粘合记录的域时,我不知道会得到哪个响应。(将不胜感激链接到权威来源)。

domain-name-system
  • 1 个回答
  • 1194 Views
Martin Hope
symcbean
Asked: 2015-02-17 02:40:33 +0800 CST

具有 SSL 客户端证书的 Web 服务的转发代理

  • 7

我有很多服务器可以访问各种外部 Web 服务,其中大多数使用 SSL,其中一些需要客户端证书。我想集中客户端证书的配置并将表示层与底层服务器分离。

虽然我可以使用 Squid 代理请求,但我无法从文档中看到如何告诉 Squid 选择特定于目标 Web 服务的客户端证书。这可能吗?

一种方法是在 Squid 代理之外维护一组 stunnel 实例,然后将客户端软件配置为使用带有 URL 重写器的 http 请求,以通过适当的 stunnel 实例路由请求,但是如果我得到 XML 响应引用,这将中断HTTPS DTD(除非我用完整的 MITM 重写内容)。

还有其他解决方案吗?

更新

将“https”重写为“http”的问题在于,它会使用 http URI 破坏任何其他资源 - 因为协议适配器会将这些资源转换回 https!

我遇到了这篇文章,它解决了将客户端证书添加到代理连接的问题——这可能是一个解决方案。但是确实需要将客户端配置为使用代理,在命名以及如何使其与拆分 DNS 一起工作方面也存在问题。诚然不是大问题,但它让我想到我在这里描述的是大多数 CDN 提供商使用的模式 - 因此我目前正在考虑使用 Apache Traffic Server 作为中间组件 - 这允许使用拆分 DNS,在客户端和源,以及用于与源服务器通信的客户端证书。

linux
  • 2 个回答
  • 4344 Views
Martin Hope
symcbean
Asked: 2014-03-13 03:31:14 +0800 CST

BBWC:理论上是个好主意,但有人保存过你的数据吗?

  • 26

我很熟悉 BBWC(电池支持的写入缓存)的用途 - 并且以前在我的服务器中使用过它们,即使是好的 UPS 也是如此。显然存在它不提供保护的故障。我很想知道它是否真的在实践中提供了任何真正的好处。

(注意,我专门寻找那些有 BBWC 并且发生过崩溃/故障的人的回应,以及 BBWC 是否有助于恢复)

更新

在这里得到反馈后,我越来越怀疑 BBWC 是否会增加任何价值。

为了对数据完整性有任何信心,文件系统必须知道数据何时被提交到非易失性存储(不一定是磁盘——我将回到这一点)。值得注意的是,很多磁盘都谎报数据何时提交到磁盘 ( http://brad.livejournal.com/2116715.html )。虽然假设禁用磁盘缓存可能会使磁盘更诚实似乎是合理的,但仍然不能保证情况确实如此。

由于 BBWC 中的缓冲区通常很大,因此屏障可能需要将更多数据提交到磁盘,因此会导致写入延迟:一般建议是在使用非易失性回写缓存时禁用屏障(并禁用 on-磁盘缓存)。然而,这似乎会破坏写操作的完整性——仅仅因为更多的数据保存在非易失性存储中并不意味着它会更加一致。事实上,可以说如果逻辑事务之间没有分界,那么确保一致性的机会似乎比其他方式少。

如果 BBWC 在数据进入其非易失性存储(而不是提交到磁盘)时确认障碍,那么它似乎满足了数据完整性要求而没有性能损失——这意味着仍然应该启用障碍。然而,由于这些设备通常表现出与将数据刷新到物理设备一致的行为(使用屏障显着变慢)以及禁用屏障的广泛建议,因此它们不能以这种方式表现。为什么不?

如果操作系统中的 I/O 被建模为一系列流,那么当写入缓存由操作系统管理时,就有一些范围可以最小化写屏障的阻塞效应 - 因为在这个级别上只有逻辑事务(单个流) 需要提交。另一方面,不知道哪些数据位构成事务的 BBWC 将不得不将其整个缓存提交到磁盘。内核/文件系统是否真正在实践中实现这一点需要比我目前愿意投资的更多的努力。

告诉fibs关于已提交的内容和突然断电的磁盘组合无疑会导致损坏 - 并且在中断后不执行完整fsck的日志或日志结构化文件系统不太可能检测到损坏更不用说试图修复它。

就故障模式而言,根据我的经验,大多数突然停电都是由于失去主电源而发生的(通过 UPS 和管理关机很容易缓解)。人们将错误的电缆从机架中拉出意味着数据中心卫生状况不佳(标签和电缆管理)。UPS 无法阻止某些类型的突然断电事件 - PSU 或 VRM 中的故障 带有屏障的 BBWC 将在此处发生故障时提供数据完整性,但是此类事件有多常见?从这里没有回应来看,非常罕见。

当然,在堆栈中将容错移到更高的位置比 BBWC 的成本要高得多——但是将服务器作为集群实现对于性能和可用性还有很多其他好处。

减轻突然断电影响的另一种方法是实施 SAN——AoE 使这成为一个实际的提议(我真的不明白 iSCSI 的意义),但成本也更高。

storage
  • 5 个回答
  • 8858 Views
Martin Hope
symcbean
Asked: 2012-10-30 04:44:03 +0800 CST

用于 WAN 优化的前向纠错

  • 3

有人知道在 Linux 上通过 UDP 隧道提供前向纠错的用户空间工具吗?

我发现Trafficsqueezer、utunnel和toutunnel实现了 TCP over UDP,但似乎没有一个提供前向错误控制。

(为了那些浏览这些问题但不熟悉 WAN 优化的人的利益:带宽限制 =MSS/(RTT*SQRT(p))其中 SQRT(p) 是数据包丢失的平方根)

linux
  • 1 个回答
  • 1243 Views
Martin Hope
symcbean
Asked: 2012-06-19 07:12:30 +0800 CST

如何管理大量桌面虚拟机?

  • 1

我正在研究提供对多个虚拟机的远程访问的可行性。VM 本身将提供用户桌面。

为了充分利用可用资源,我希望虚拟机在用户断开连接时休眠。这意味着能够在用户连接时启动它们。理想情况下,每个用户都将“拥有”一个 VM 映像——但如果不是,那么我会要求终止会话。显然,这需要将远程访问协议绑定到 VM 管理中。有什么东西可以提供这样的功能吗?

(开放协议的额外信用!;)

virtual-machines vdi
  • 2 个回答
  • 267 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