Ansible 可以轻松确保进程在每个主机上运行。
我可以做这样的事情:
---
- hosts: app_cluster
tasks:
- name: Look for the "foo" process
shell: ps -ef | grep foo | grep -v grep
register: process_list
changed_when: false
- name: Start "foo" if needed
shell: nohup /bin/foo &
when: "process_list.stdout.find('foo') == -1"
Run Code Online (Sandbox Code Playgroud)
但是,我需要在整个集群中拥有特定进程的一个实例。IE。它可以在任何主机上运行,只要它在某处运行并且集群中任何地方只有一个这样的进程。
在 ansible playbook 中可能有一种方便的方法来做到这一点吗?
Oracle 官方文档说,对于 RAM 超过 16GiB 的机器,我们需要分配 16GiB 的交换空间。
我们的服务器是 RHEL 7,有 256GiB 的 RAM。
DBA 不想看到系统交换,因此他们希望我们非常积极地监控 16GiB 的交换。
我建议我们将 RAM 加倍到 512GiB(费用已获批准),并禁用交换。然而,即使我们将 RAM 加倍,这也违背了 Oracle 建议的具有 16GiB 的交换空间。
老实说,我不明白拥有 3% 的交换空间有什么意义,或者为什么如果我添加的 RAM 比交换空间多,我们必须保留交换空间。
那么,有没有什么好的论据可以用来证明在没有交换的情况下运行 Oracle 是合理的?
PS 我提到内存翻倍的唯一原因是为了证明我很难争论的论点的荒谬性。我真正要寻找的是证明禁用交换的理由。
我目前正在寻找一些运行 Oracle Linux 6.6(内核 2.6)和 6.7(内核 3.8)的具有相同内存和 CPU 数量的 VMWare 虚拟机上的一些性能问题。这些机器通过 NFS4 挂载相同的共享,其中包含一些共享库,这些库包含在使用 LD_LIBRARY_PATH 的构建中。两个系统都使用相同的挂载选项(默认),这显然意味着 6.7 的“硬”和 6.6 的“软”。从 6.7 开始,我们观察到编译过程的性能下降了 5 倍,而 CPU 空闲大约 80%,但也没有观察到高 io-wait(顶级报告 ~0.4%wa)。
尝试重现该问题时,我很快发现,只要通过 LD_LIBRARY_PATH 包含来自 NFS 挂载的共享库,在 6.7 上不仅编译而且几乎所有命令(例如“ls”)都慢得多。
我用一个简单的“时间”开始了我的调查:
在 6.6 上:没有设置 LD_LIBRARY_PATH 和 PATH:
$ time for i in $(seq 0 1000); do ls done;
... ls output
real 0m2.917s
user 0m0.288s
sys 0m1.012s
Run Code Online (Sandbox Code Playgroud)
LD_LIBRARY_PATH 和 PATH 设置为包含 NFS 上的目录
$ time for i in $(seq 0 1000); do ls done;
... …Run Code Online (Sandbox Code Playgroud) performance virtual-machines kernel-modules nfs4 oracle-linux
我正在尝试在运行 openjdk:17-oracle 的容器中安装 xargs,但我无法确定此映像中存在什么包管理器。
FROM openjdk:17-oracle
RUN apt-get install findutils
Run Code Online (Sandbox Code Playgroud)
抛出错误:
=> ERROR [stage-1 4/4] RUN apt-get install findutils 0.5s
------
> [stage-1 4/4] RUN apt-get install findutils:
#13 0.395 /bin/sh: apt-get: command not found
-
Run Code Online (Sandbox Code Playgroud)
yum install findutils和其他几个一样。
我需要 xargs,因为 gradle 运行程序使用它来为我的 java 进程构建“执行”命令。
我有很多机器运行 Red Hat 兼容内核,以前这不是问题。但是,最新的默认行为似乎是在“yum update”上启用 UEK4 来更新存储库配置文件
下一个“yum update”将安装 UEK4 并将其设置为默认内核。由此引起的任何问题都会在下次启动失败时被发现。
如果我能在 yum 更新存储库文件之前抢先禁用 UEK4 存储库,那就更好了。
/etc/yum.repos.d/public-yum-ol6.repo随 OL6 Update 9 安装的默认 yum 存储库配置文件包含对变量的引用$uek,$uek3并$uek4建议可以通过某种集中方式禁用 UEK 存储库。
[public_ol6_UEKR4]
name=Latest Unbreakable Enterprise Kernel Release 4 for Oracle Linux $releasever ($basearch)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL6/UEKR4/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=$uekr4
Run Code Online (Sandbox Code Playgroud)
yum 可以从哪里获取这些值?
我可以将它们设置在某个地方,从而防止“yum update”无意中更改内核并将事情搞砸吗?
我正在评估 Oracle Linux 作为 CentOS 的替代品。在我的测试期间,我必须编译一个包libyaml-devel,但库中不存在该库。
我的印象是 Oracle Linux 会提供与 RHEL 相同的软件包。那么为什么我可以在 RHEL 中找到它,但在 Oracle 上却找不到呢?我错过了什么吗?
oracle-linux ×7
centos ×2
redhat ×2
ansible ×1
containers ×1
java ×1
linux ×1
nfs4 ×1
oracle-11g ×1
performance ×1
rpm ×1
swap ×1
yum ×1