关于"Neighbour table overflow“的错误分析及解决方案

本文介绍了解决Linux系统中邻接表溢出问题的方法,通过调整网络设备阈值,防止错误信息在日志文件中频繁出现。

这几天在查看日志文件时,出现 "Neighbour table overflow"的邻表溢出问题,网上查看资料后去顶是arp表出现问题了,

以下是http://www.gnulinuxclub.org/index.php?option=com_content&task=view&id=333&Itemid=49的问题。

How to resolve "Neighbour table overflow" problem?Print E-mail

Gnu/Linux servers (when used extensively as a server) throw the following messages in log file

  kernel: Neighbour table overflow.
  kernel: printk: 100 messages suppressed.
  kernel: Neighbour table overflow.
  kernel: printk: 151 messages suppressed.
  kernel: Neighbour table overflow.

The solution to the problem is to increase the threshold level for the network devices

To check the present threshold level 1

cat /proc/sys/net/ipv4/neigh/default/gc_thresh1

It will give some value as 128 or 256 or 512.

This can be increased to the next level.Like if the value is 128 then

make the thresh1 value as 256 and thresh2 as 512 and thresh3 as 1024.

echo 256 > /proc/sys/net/ipv4/neigh/default/gc_thresh1

echo 512 > /proc/sys/net/ipv4/neigh/default/gc_thresh2

echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

This will stop the Error messages that were recieved in the log file

 

解决方案:

1、检测当前值:

  [root@localhost ~]grep . /proc/sys/net/ipv4/neigh/default/gc_thresh*

2、输入一个比进程实体更大的值:

 [root@localhost ~]echo 512 > /proc/sys/net/ipv4/neigh/default/gc_thresh1

 [root@localhost ~]echo 2048 > /proc/sys/net/ipv4/neigh/default/gc_thresh2

 [root@localhost ~]echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh3

3、把上面的值添加到/etc/sysctl.conf文件中:

net.ipv4.neigh.default.gc_thresh1 = 512

net.ipv4.neigh.default.gc_thresh2 = 2048

net.ipv4.neigh.default.gc_thresh3 = 4096

下面再来引用一下proc/sys/net 详解(即时调整内核网络参数)

注明:这个是分享的。

Linux这几年发展迅速,推出了很多版本。让我们眼花缭乱,不过在每个Linux的发行版本中,都存在一个/proc/目录,这就是Linux系统目录。有的也称它为Proc文件系统。对于那些网络管理员必须要掌握Linux系统目录。

在这个目录中,包括了一些特殊的文件,不仅能用来反映内核的现行状态和查看硬件信息,而且,有些文件还允许用户来修改其中的内容,以调节内核的现行工作状态,例如/proc/sys/子目录下的文件。

与/proc/目录中其它目录不相同的是,/proc/sys/目录下的文件不仅能提供系统的有关信息,而且还允许用户立即停止或开启内核的某些特性及功能。在/proc/sys/目录中的/proc/sys/net/子目录更是与网络息息相关,我们可以通过设置此目录下的某些文件来开启与网络应用相关的特殊功能,同时,也可以通过设置这个目录下的某些文件来保护我们的网络安全。因此,作为一名Linux下的网络管理员,就很有必要详细了解/proc/sys/net/目录下文件的各种功能和设置方法,让它能更好地为我们工作。

一、/proc/sys/net/目录说明。

/proc/sys/net/目录主要包括了许多网络相关的主题,例如:appletalk/,ethernet/,ipv4/,ipx/,及ipv6/。通过改变这些目录中的文件,网络管理员能够在系统运行时调整相关网络参数。虽然在Linux中还有很多有关网络的配置方法,但熟悉此目录中的相关内容对网络应用是有很大的帮助的。

在/proc/sys/net/目录下有两个目录,与现在的IPV4网络的运行息息相关,调整这两个目录下的某些文件的参数,能为我们的网络应用带到意想不到的效果,这两个目录就是/proc/sys/net/core/目录和/proc/sys/net/ipv4/目录,下面笔者将会对这两个目录中的重要文件分别作一个详细的说明。

1、/proc/sys/net/core/目录。

此目录中包括许多设置用来控制Linux内核与网络层的交互,即当网络有什么动作时,内核做出什么样的相应反应。

在其中有以下的一些重要文件:

(1)、message_burst:设置每十秒写入多少次请求警告;此设置可以用来防止DOS攻击,缺省设置为50;

(2)、message_cost:设置每一个警告的度量值,缺省为5,当用来防止DOS攻击时设置为0;

(3)、netdev_max_backlog:设置当个别接口接收包的速度快于内核处理速度时允许的最大的包序列,缺省为300;

(4)、optmem_max:设置每个socket的最大补助缓存大小;

(5)、rmem_default:设置接收socket的缺省缓存大小(字节);

(6)、rmem_max:设置接收socket的最大缓存大小(字节);

(7)、wmem_default:设置发送的socket缺省缓存大小(字节);

(8)、wmem_max:设置发送的socket最大缓存大小(字节)。

2、/proc/sys/net/ipv4/目录。

此目录中的内容用来添加网络设置,在其中的许多设置,可以用来阻止对系统的攻击,或用来设置系统的路由功能。

其中有以下的这些重要的文件:

(1)、icmp_destunreach_rate、icmp_echoreply_rate、icmp_paramprob_rate、icmp_timeexeed_rate:设置发送和回应的最大icmp包的速率,最好不要为0;

(2)、icmp_echo_ignore_all和icmp_echo_ignore_broadcasts:设置内核不应答icmp echo包,或指定的广播,值为0是允许回应,值为1是禁止;

(3)、ip_default_ttl:设置IP包的缺省生存时间(TTL),增加它的值能减少系统开销;

(4)、ip_forward:设置接口是否可以转发包,缺省为0,设置为1时允许网络进行包转发;

(5)、ip_local_port_range:当本地需要端口时指定TCP或UDP端口范围。第一数为低端口,第二个数为高端口;

(6)、tcp_syn_retries:提供限制在建立连接时重新发送回应的SYN包的次数;

(7)、tcp_retries1:设置回应连入重送的次数,缺省为3;

(8)、tcp_retries2:设置允许重送的TCP包的次数,缺省为15。

二、/proc/sys/net/目录下文件的设置方法。

在了解了/proc/sys/net/core/目录和/proc/sys/net/ipv4/目录中一些重要文件的意义和作用后,下面说说如何设置这两个目录中的这些重要文件来为我们工作的。

读者应该了解,在Linux系统中,要改变某种服务或设备的工作状态和功能,主要是通过使用命令方式和直接修改它的配置文件方式来达到目的,对于这两个目录下的文件,我们也可以通过这两种方式来修改这些文件内容中的值,使它们按照我们的意图工作。

在进行设置之前,应当注意的是,当你确定要修改某个文件的当前值时,一定要保证输入的命令格式和值的内容都是正确的,因为任何的错误设置都会引起内核的不稳定,如果你不小心造成了这种问题,你就不得不重新引导系统了。在下面的说明中,笔者会将注意的地方特别说明出来的。

首先来看看如何使用命令方式来修改这两个目录下文件的。我们可以通过echo和sysctl这两个命令来修改这两个目录中的文件,下面笔者将这两个命令的使用方法分别列出来。

1、sysctl命令是为设置这两个目录中的文件而定制的,它被默认安装在/sbin/目录中, 我们可以通过使用此命令来显示和设置/proc/sys/net/目录下的文件内容。例如:/sbin/sysctl -a命令用来显示此目录下的所有文件配置内容;/sbin/sysctl -w命令用来修改此目录下指定文件中的变量值,如:/sbin/sysctl -w net.ipv4.ip_forward="1"用来设置允许IP包转发。其它的参数,读者可以通过输入/sbin/sysctl -h命令来得到,在这里就不再具体全部列出了。要注意的是,这个命令的使用需要管理员权限的,如果用户不是以管理员身份登录的,在使用此命令前用SU命令得得管理权限后再操作。

2、/proc/sys/net/目录下的文件内容也可以通过用echo命令来修改。例如:echo 1 > /proc/sys/net/ipv4/ip_forward用来设置允许IP包转发;echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all用来设置不回应ICMP ECHO包。在使用echo命令时,还应特别注意此命令的输入格式,即在echo命令和值之间,以及值与在于符号(>)之间,在于符号与要修改的文件路径之间都必需有一个空格。而且,在这两个目录中的有些文件有不上一个的值,所以,如果你想一次性传递多个值,那么,每一个值之间也应保证用空格隔开。

同时也要注意的是,用此方法修改/proc/sys/net/目录下文件中的内容在系统重新启动后,所设置的内容会全部变为默认值,因此,如果要想设置的值永久有效,可以直接把这个命令加入到/ect/rc.d/rc.local文件中,在这里,这个文件的路径是指Red Hat Linux发行版本中的,其它发行版本读者根据具体情况来定。如果命令项太多,也可以把这些命令项编写成一个脚本后,加上可执行权限,再放到这个文件中,这样当系统启动时,就会按/etc/rc.d/rc.local中的设置自动执行。如果你不想修改/etc/rc.d/rc.local文件,那么笔者推荐你使用/sbin/sysctl命令。

使用命令方式设置/proc/sys/net/目录下的文件固然方便易行,但有一部分读者更喜欢直接修改它们的配置文件的方式,因为这种方式更加直观,但它比较适合对系统了解比较深的用户。

与其它服务或设备不同的是,Linux系统只为/proc/sys/net/目录提供了一个配置文件,那就是/ect/sysctl.conf,用户可以通过直接编辑/ect/sysctl.conf配置文件,来修改增加相应/proc/sys/net/目录下文件内容中的变量的值,这样当系统启动时就会读取此文件中的配置内容来设置相应的项。用vi来编辑此文件是非常简单的,此文件中内容格式也非常清晰易读,如其中有如下条目:net.ipv4.ip_forward=0,把值修改为1后就打开IP包转发。其实,用/sbin/sysctl命令修改和直接编辑 /etc/sysctl.conf文件内容具有相同的效果,因此,为了安全,推荐用户优先使用/sbin/sysctl命令方式。

到这里,想必读者已经对/proc/sys/net/目录下的/proc/sys/net/core/和/proc/sys/net/ipv4/这两个目录,已经有了一定了解了。可是,这只是笔者为了突出/proc/目录与IPV4网络的作用而特别选出来说明,其实,在/proc/目录下,还有许多的文件,虽然不能被用户如上述的两个目录那样可以被设置,但是,可以通过这些文件来了解系统详细情况和现行的运行状态,读者可以从网络上找到这个目录的详细说明。

 

参考:

http://hi.baidu.com/252568175/blog/item/81a73846ffecab026a63e50f.html

http://www.web-polygraph.org/mail-archive/users/200104/0049.html

http://www.liukang.com/archives/000085.html

<think>好的,用户遇到了AQWA中的错误:element#10小于最小0.10倍facet半径的问题。我需要根据之前的引用和知识来给出解决方案。 首先,引用[1]中提到类似的问题,即单元间距不足,需要调整网格。用户之前的案例是调整宽度方向的网格数目,将wnumber从5改为10。这说明网格密度不足可能导致单元间距过小。 现在用户的问题是关于element#10,可能同样需要检查该单元周围的网格密度。首先应该定位element#10的位置,可能在船体侧面或其他结构复杂区域。这些地方的网格划分可能需要更细致。 接下来,解决方案应包括调整网格参数。比如,增加相关方向的网格数量,如wnumber或类似参数,以提高单元间距。同时,检查局部细化是否过度,导致某些区域单元过密。用户可能需要全局调整网格参数,确保均匀分布,或者在特定区域使用局部控制。 另外,检查模型几何是否存在细小特征或锐角,这些可能导致网格生成时单元过于接近。简化几何或修复几何问题也是关键步骤。 验证步骤也很重要,调整后重新运行网格划分,使用检查工具确认单元间距是否符合要求。如果问题依旧,可能需要进一步调整参数或检查其他潜在问题。 最后,提醒用户如果问题未解决,可以提供更多细节以便进一步帮助,如引用[2]的建议,保持耐心并寻求社区帮助。需要确保回答结构清晰,步骤明确,帮助用户逐步解决问题。</think>### AQWA中element#10单元间距错误解决方案错误表明10号单元的形心间距小于相邻单元面半径的0.1倍,属于网格质量校验未通过问题。以下是分步解决方案: 1. **定位问题单元** - 在AQWA-GS界面通过`List Elements`命令调取10号单元坐标 - 使用`Plot Elements`可视化显示该单元位置(通常在结构突变区域) 2. **调整网格参数** - 若单元位于船体侧面,修改宽度方向网格参数: $$ \text{wnumber} = \text{ceil}(\frac{L}{0.1R}) $$ 其中$L$为特征长度,$R$为面半径 - 将原参数值增大2-3倍(例如原为5则改为10-15)[^1] 3. **检查局部细化设置** ```fortran ! AGS脚本示例 MESHING PARAMETERS ELEMENT SIZE = 0.5 ! 调整为更大尺寸 RATIO LIMIT = 1.5 ! 限制增长率 ``` 避免在曲面过渡区使用过激的网格过渡比 4. **验证修正效果** - 重新生成网格后执行: ```fortran CHECK MESH QUALITY FACET RADIUS CHECK = ON MINIMUM SPACING = 0.1 ! 保持默认校验值 ``` - 确认输出日志中不再包含element#10的报错
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值