我正在玩pgBouncer作为PostgreSQL的连接池系统。 我的系统是一个12核心,运行Debian 8.1的64GB RAM和1Gbpsnetworking接口。 现在我想提高开放套接字连接的限制,比如10.000个并发客户端。 在进行数据库基准testing时, pgbench实用程序会阻止大约950个并发客户端,这似乎达到了1024个开放式的极限,就像以前那样。 我检查了fs.file-max内核参数和pgbench运行用户的资源限制: # sysctl fs.file-max fs.file-max = 6598264 # su – postgres $ ulimit -Sn 65536 $ fgrep files /proc/self/limits Max open files 65536 65536 files $ 但是, proc的限制表明,对于pgBouncer (以用户postgres运行)的最大打开文件的软限制最多只有1024个打开的文件: $ ps -e | fgrep pgbouncer 9840 ? 00:00:00 pgbouncer $ fgrep files /proc/9840/limits Limit Soft Limit Hard Limit […]
我有一台时间设置错误的NTP服务器,将来会有7个小时(机器出货后时区被更改,但不是时间)。 服务器本身不同步,但只有本地时钟。 在这个服务器上> 10个客户端同步它们的时钟,导致整个服务器组的时间错误。 我怎样才能改变NTP服务器的时间,纠正被纠正,所有的客户端也会得到纠正? 我第一次testing通过“dateMMDDhhmm”,让客户端从服务器断开连接(ntpq服务器名称前面的星号消失)只是一个修复。 我不知道如何在所有服务器上手动更改所有同步服务的时间,通过将时钟设置为7小时来引导系统拥有未来的文件。 可能会有崩溃,系统为工厂生产提供服务。
我有一个用例,我需要dynamicconfiguration一些文件,其中包括系统中存在的接口的名称eth0 , wlan0 。 但是,当我改变系统有时它改为eth1或wlan1 。 从Ubuntu 14.04开始,以太网接口被命名为p2p1 , p1p1而无线接口则被命名为wlan0或wlan1 。 所以我们可以说接口的名字可以是任何东西,只要我们可以find什么名字给了什么样的接口就无所谓了。 我为此写了一个小脚本,但是我不知道是否有更好的方法来find这个适用于所有基于Linux的系统的工具。 #!/bin/bash # check if directory exist DIRECTORY=/sys/class/net wifi_interface="" lan_interface="" if [ -d "$DIRECTORY" ]; then cd $DIRECTORY ilist=`ifconfig -s | awk '{print $1}' | tail -n +2` # array length ilist_len=`echo "${ilist[@]}" | wc -l` # empty array il= # Iterating over […]
我有一些问题的networking客户端发送数据太快。 我想慢下来,使用iptables,或者可能tc。 我见过的iptables解决scheme如: sudo iptables -A INPUT -m state –state RELATED,ESTABLISHED -m limit –limit 50/second –limit-burst 50 -j ACCEPT 但我认为限制适用于符合规则的所有内容,而不是每个客户的地址。 有没有办法使这个规则限制每个客户端地址的数据包?
我对使用Active Directory(AD)和Kerberos的Linux服务器是否需要创build计算机帐户感到困惑。 作为一台机器的Linux服务器是否需要join和AD域,并且这样做有一个计算机帐户有AD的authentication/授权服务? 这里有一些要求: 能够使用来自Linux服务器的AD进行基于用户和组成员的身份validation。 能够将本地Linux UID / GID号码映射到AD用户和组名(现在我们使用的是非AD LDAP服务器,并且我们为用户和组帐户保留了UID / GID号码,理想情况下,我想继续这种做法)。 能够将Linux Sudoer权限映射到AD组。 使用开源或社区工具/插件像SSSD,而不是像Centrify这样的付费商业产品。 我很担心在基于私有云的服务器上创build/删除大量的Linux计算机账户的负担,这些服务器可能不会那么长时间; 但我希望使用AD的中央用户帐户存储的好处。 注:我在2008R2function级别使用RHEL和Centos 6-7 Linux服务器和Windows Server 2012 AD。
root@openwrt:~# ip -s -s -4 neigh show dev lan 10.64.42.121 lladdr b8:20:00:00:00:00 used 6387/6341/6313 probes 1 STALE 10.64.42.157 lladdr b8:20:00:00:00:00 used 24/813/19 probes 1 STALE 10.64.42.12 used 29066/30229/29063 probes 6 FAILED 10.64.42.1 lladdr e8:00:00:00:00:00 ref 1 used 10/5/5 probes 1 REACHABLE root@openwrt:~# cat /proc/sys/net/ipv4/neigh/default/gc_interval 30 root@openwrt:~# cat /proc/sys/net/ipv4/neigh/default/gc_stale_time 60 root@openwrt:~# cat /proc/sys/net/ipv4/neigh/lan/gc_stale_time 60 局域网中的主机(b8:20:00:00:00:00)IP地址为10.64.42.121。 这个IP现在是无效的,同一个主机的IP现在是10.64.42.157(新的DHCP租约)。 […]
我们有一个网格计算环境,主要由CentOS 5.10主机组成,人们编译应用程序然后运行它们。 我们正在考虑升级到CentOS 6.7,我们想知道是否glibc会与CentOS 5.10向后兼容,因为我们无法一次性推出升级(例如,有人可能会编译6.7然后编译调度到5.10主机执行)。 CentOS 6.7上的glibc编译程序基本上会在CentOS 5.10上运行吗? 我们已经看了6.7的glibc的来源(不记得正确的版本),我们认为它应该是,但希望得到第二个意见。
据我所知,'time_wait'stat中的tcp端口不能被使用。 但是,在我的实验中,服务器重用了“time_wait”端口? 为什么? 首先,在客户端机器上input命令ehco 40000 40001 > /proc/sys/net/ipv4/ip_local_port_range 。 所以,TCP端口的最大数量是2。 服务器代码 while (1) { int len = sizeof(struct sockaddr); fd = accept(sfd, &remote, &len); read(fd, buf, sizeof(buf)); close(fd); } 客户端代码 for (i = 0; i < 3; i++) { sleep(1); pid_t pid = fork(); if (pid == 0) { handler(); exit(0); } } void handler() […]
在新安装的CentOS 7操作系统上,我试图运行yum更新时出现这个错误 Processing Conflict: kernel-3.10.0-514.6.1.el7.x86_64 conflicts kmod < 20-9 –> Finished Dependency Resolution Error: Package: firefox-45.6.0-1.el7.centos.x86_64 (updates) Requires: nspr >= 4.11.0 Installed: nspr-4.10.8-2.el7_1.x86_64 (@anaconda) nspr = 4.10.8-2.el7_1 Error: Package: nss-3.21.3-2.el7_3.x86_64 (updates) Requires: nss-softokn(x86-64) >= 3.16.2.3-14.2 Installed: nss-softokn-3.16.2.3-13.el7_1.x86_64 (@anaconda) nss-softokn(x86-64) = 3.16.2.3-13.el7_1 Error: Package: 1:libguestfs-1.32.7-3.el7.centos.2.x86_64 (updates) Requires: supermin5 >= 5.1.16-2 Installed: supermin5-5.1.10-1.2.el7.x86_64 (@anaconda) supermin5 = 5.1.10-1.2.el7 […]
在我的pipe理员工作期间,我需要login到几个远程的ssh服务器。 我与三个不同的计算机客户端工作,所有这些都是Debian GNU / Linux系统。 我保留一个工作空间目录,我把我需要做的所有工作都放在这个目录下,该目录包含一个bashrc文件和一个ssh_config文件。 我手动同步该目录内容与脚本,使用rsync从一台客户端计算机到其他客户端,因为我移动并开始使用不同的客户端。 三个客户端上的本地用户都需要最less的configuration,所以如果我需要创build一个新的本地用户或重新安装一个客户端,我只需要rsync工作空间,并添加一个引用到我的自定义workspace/bashrc在真实用户的$HOME/.bashrc 。 我的自定义workspace/bashrc创build了几个别名,我得到我平常的环境,无论我使用的客户端。 我的自定义workspace/bashrc创build别名以这种方式连接到远程服务器: alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com' 我只需在任何客户端的terminal中键入s1loginserver1,因为我的自定义ssh_config设置了所需的公钥authentication选项,正确的端口server1正在侦听并且正确的用户。 现在这就像一个魅力,只要ssh命令是我所需要的。 不幸的是,一旦我需要另外一个使用ssh命令,事情变得更加混乱。 例如,如果我需要rsync什么东西到其中一台服务器,我不得不写下整个ssh命令: rsync -Pavz –delete -e "ssh -F $HOME/workspace/etc/ssh_config" … 其他命令(如scp , ssh-copy-id等) scp发生类似的情况。 我希望能写 rsync -Pavz –delete -e "ssh" … 而是让ssh从环境variables中取出它的configuration文件名,这样我就可以在我的bashrc设置这个环境variables,并且每个ssh调用都能自动工作。 有这样的环境variables还是有不同的解决scheme?