检查您的打开文件数量的限制,它们不停地以一种奇怪的方式损害我们的潜在客户。应该杜绝此事再次发生,但是要发现这种危害,尤其是对于不同的Linux分布式系统而言,确实很困难。
打开文件对于系统操作而言至关重要。因为它们定义了一个进程所能打开的总的文件句柄数量,要记住,在Unix/Linux上,所有的一切都是以文件的形式存在的,包括所有的的实体文件,尤其是TCP/IP 及Unix套接字也算作文件。
这意味着像Nginx或MySQL等服务能够耗尽所有文件句柄,包括用户TCP/IP 连接及磁盘上的文件句柄。所以,很轻易地就能够消耗完一台中等负荷系统的所有可用文件量。
许多Linux系统默认的打开文件数量为1024个,这意味着在Nginx或MySQL系统中,如果有几百个用户/连接和打开文件的话,就很容易达到文件用量上限。当达到系统上限时,随着用户登录/登出系统,会有很多奇怪的故障随时发生。有些服务会在日志中报告错误,但是绝大多数服务不会给您任何通知。为避免此类故障,您需要重设默认值,设置地址在/etc/security/limits.conf目录下。我们常用的最小值是16535个,但是后来在很多系统上使用了65535个。如您用的是大型系统,还使用了HAPeoxy, 您可将该值设的更高,如256,000或更高的值。所以,为使工作称心如意,将用户(*表示系统上的所有用户)的软件及硬件限制设置在65535。需登出再登入才能使设置生效。
同时,您要明白,由于limits.conf对于根用户而言需要特定的行,所以Debian/Ubuntu系统会遇到一些特殊的问题。许多系统(如CentOS),都使用“*”来表示所有用户,但是以Debian为基础的系统“*”并不包括根用户,看起来没有意义,但是事实就是这样的。
最后,请记住有一个Linux内核系统级的参数,即fs.file-max.可将打开文件数量设置到最大值,该参数也可根据RAM或其它因素(根据分配情况),进行动态设置,但是在繁忙的系统中,该参数的值可能很小。我们通常将其设置为500K或1百万,但前提是确保系统不会在使用过程中达到这一上限。可以通过sysctl及sysctl.conf进行设置。
(Authored by Steve Mushero / ChinaNetCloud CEO & CTO 本博客英文原文请点此查看)
开源平台中以太网连接方案里W5100是众所周知的,W5200正在此领域越来越受欢迎。这个测试结果是在Arduino Due(Atmel CortexM3-84Mhz), Maple(ST CortexM3-72Mhz) 和 Teensy 3.0(Freescale Cortex M4-96Mhz) 上执行的并显示出外围设备,DMA、中断、I2C和SPI的性能测试。以太网的性能是基于W5200的,你可以看到性能取决于SPI吞吐量。
Platform
SPI speed
UDP
TCP
Arduino Due
28Mhz
15.6Mbps
12.9Mbps
Maple
16Mhz
9.2Mbps
8.4Mbps
Teensy3.0
24Mhz
14.2Mbps
11.8Mbps
更多信息>>
感谢关注!
与我们联系:
WIZnet邮箱:wiznetbj@wiznet.co.kr
package com.beyondtest;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.HasInputDevices;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class TestOrder {
WebDriver wd;
@Test
public void test() throws InterruptedException{
//设置firefox浏览器
wd = new FirefoxDriver();
//打开12306主页
wd.get("http://www.12306.cn/");
//点击购票/预约按钮
Thread.sleep(1000);
wd.findElement(By.cssSelector("img[alt=\"购票\"]")).click();
//输入用户名、密码,等待手工输入验证码
Thread.sleep(1000);
wd.switchTo().frame("iframepage");
wd.switchTo().frame("main");
wd.findElement(By.id("UserName")).sendKeys("username");
wd.findElement(By.id("password")).sendKeys("password");
Thread.sleep(10000);
wd.findElement(By.id("subLink")).click();
//进入订票界面,点击车票预定按钮
Thread.sleep(2000);
wd.findElement(By.partialLinkText("车票预订")).click();
//输入出发地和目的地
//出发地无法直接输入,需要借助键盘的上下键和回车键
Thread.sleep(1000);
wd.findElement(By.id("fromStationText")).clear();
wd.findElement(By.id("fromStationText")).sendKeys("北京");
((HasInputDevices) wd).getKeyboard().sendKeys(Keys.ARROW_DOWN);
((HasInputDevices) wd).getKeyboard().sendKeys(Keys.ARROW_DOWN);
//注意这里不能用Keys.ENTER
((HasInputDevices) wd).getKeyboard().sendKeys(Keys.RETURN);
Thread.sleep(1000);
wd.findElement(By.id("toStationText")).clear();
wd.findElement(By.id("toStationText")).sendKeys("沈阳");
((HasInputDevices) wd).getKeyboard().sendKeys(Keys.RETURN);
//输入出发日期
//现在这个地方不可以直接输入了,可以参考处理表格的方法
//单击查询按钮
wd.findElement(By.id("submitQuery")).click();
//关闭浏览器
wd.close();
}
}