最近,我们的 oracle 数据库在我们目前所知的 1 个查询上锁定时遇到了问题。
我将对发生的事情进行细分,但实际上与我的问题没有太大关系,但我愿意接受建议。
断断续续地不知道什么时候会发生,过去一个月已经发生了 4 次,用户会点击应用程序中的某些内容。用户点击了什么仍然未知。无论单击什么,它都会对数据库运行查询,这将生成大约 700k 行。
我检查了正在运行查询的表,索引看起来不错。
数据库是 60GB,服务器上有 32GB。
从数据库服务器上的日志我看到高 I/O 但 CPU 和 RAM 保持不变。
一台应用服务器,CPU 使用率高达 75% 左右。我可以找到工作进程,找到 PID,但是当我终止与工作进程关联的 PID 时,CPU 将短暂关闭,然后立即恢复。
同样回收应用程序池,并重新启动 IIS 会做同样的事情,CPU 会短暂下降,然后又会恢复正常。
唯一可以使服务器恢复正常的方法就是重新启动。
所以我的建议是,如果这个查询是导致锁定的原因,可以增加盒子上的内存以允许数据库缓存并耗尽内存。我听过一次,但我不确定它是否属实。
存储是具有 3 层的 HP PAR 3,数据库几乎位于 SSD 层中。
SSD 或内存哪个更快
3.6 之前的 Linux 内核使用路由缓存来进行 IPv4 多路径路由,这意味着在两个单独的线路/ISP 之间路由非常容易。从 3.6 开始,算法改为按数据包,这意味着需要一些路由表/规则/iptables 标记技巧来实现两条线路/ISP。
但是,如果您有两条线路与同一个 ISP 可以以平衡/故障转移方式在每个数据包的基础上沿着两条线路路由一个 IP,那么从 3.6 开始,您可以轻松实现线路绑定(在 IP 级别),因为每个数据包在两个方向上的路由。
从 4.4 开始,内核再次更改为基于源地址和目标地址散列的基于流的负载平衡。
我目前正在运行内核 4.4.36,并且正在通过 PPPoE 连接使用多路径路由。我的来自 ISP 的下行流量基于每个数据包通过两条单独的线路进行路由(一个 IP 沿两条线路路由)。这使我的下载速度比单个线路的速度更快。几乎两条线的速度加在一起。它运行良好,Skype 视频、VoIP (UDP)、YouTube 等都运行良好。
由于拥有如此良好的下游体验,我想尝试上游,但我的上游流量是根据较新的基于流的算法在两个 ppp 设备(具有相同的 IP 地址)之间路由的。这意味着我无法达到比单行速度更快的上传速度。
有没有办法将当前内核配置为使用 per-packet 算法?或者其他一些方法来实现每包多路径路由?我是否需要恢复到较旧的内核(由于其他各种原因我不想这样做)?
我的 ISP 不支持多链路 ppp。
如果相关,我目前正在 Raspberry Pi 3 上运行 Arch Linux ARMv7。
我有多个 VPN 连接使用相同的网关 IP(我无法更改它,因为它不受我的控制)。这些 VPN 都提供对不同网络的访问,并且网络至少在上游一两跳,因此在所有情况下都需要网关 IP。使用 Linux,要路由到网络,我可以简单地执行以下操作:
ip route add $destination_1 via $gateway_ip dev $interface_1
ip route add $destination_2 via $gateway_ip dev $interface_2
ip route add $destination_3 via $gateway_ip dev $interface_3
Run Code Online (Sandbox Code Playgroud)
等等。
然后 Linux 会将每个目标网络的流量放置到正确的接口上,前往正确的网关,因此每个接口的网关 IP 是否相同都没有关系。
我的问题是,如何在 OpenBSD 中实现这一目标?我尝试过但失败了。我的发现是,对于特定目的地,我可以:
但我不知道如何指定两者。
我希望 Apache 侦听特定接口上的本地链路 ipv6 地址。我的 httpd.conf 中有以下行:
Listen [fe80::a00:16ff:fe89:420f]:80
Run Code Online (Sandbox Code Playgroud)
它基于此处的 Apache 文档:https : //httpd.apache.org/docs/2.4/bind.html “IPv6 地址必须括在方括号中”
我的操作系统/Apache版本详情如下:
$ httpd -v
Server version: Apache/2.4.18 (Unix)
Server built: Dec 14 2015 08:05:54
$ uname -rv
4.3.3-3-ARCH #1 SMP PREEMPT Wed Jan 20 08:12:23 CET 2016
Run Code Online (Sandbox Code Playgroud)
使用显示的结果journalctl -e是:
(22)Invalid argument: AH00072: make_sock: could not bind to address [fe80.....
IPv6 正在工作,因为我有 sshd 和 dnsmasq 监听。我曾尝试向地址附加两个不同的范围 ID 后缀。您可以使用的接口ID3或名字net1作为既是scopeidping6和sshd。
$ ip addr | grep -Po …Run Code Online (Sandbox Code Playgroud) 在 Arch Linux ARM (Raspberry Pi) Kernel 4.4.37 上,我创建了一个 macvlan 例如
ip link add link eth0 mac0 type macvlan
Run Code Online (Sandbox Code Playgroud)
然后 macvlan 虚拟 NIC 出现在列表中,因此我为其分配了一个 IP 地址,并将链接状态设置为 up。(顺便说一句,我曾尝试与模式bridge,vepa和private)。
然后我可以从我的 Windows 客户端 ping IP,但是当我检查 Windows 中的 ARP 缓存 ( arp -a) 时,它们显示的 MAC 地址与主(物理)网络适配器相同,而不是新创建的 macvlan MAC 地址。
我确保清除 ARP 缓存,尝试使用客户端以前从未见过的 IP 地址等,但它始终显示错误的 MAC。
当我为 macvlan MAC 地址创建到 Windows 客户端的静态 ARP 条目并 ping 相关 IP 地址时,tcpdump 显示进入 macvlan 接口的回显请求,并且它在主(物理)接口上不显示任何内容,并且我在我的 Windows 客户端上收到了 ping 响应(一旦我记得设置 iptables 规则以允许流量!)
清除客户端上的 …
iproute2 ×2
linux ×2
routing ×2
apache-2.4 ×1
arch-linux ×1
gateway ×1
httpd.conf ×1
iis ×1
ipv6 ×1
link-local ×1
linux-kernel ×1
mac-address ×1
memory ×1
openbsd ×1
oracle ×1
route ×1
ssd ×1