linux 测试网速的相关工具2012-04-18 9:211 iptraf -g 这个最直观2 iperf  Iperf 是一个网络性能测试工具。Iperf可以测试

linux 测试网速的相关工具
2012-04-18 9:21
1. #  iptraf -g   //这个最直观

2. iperf  Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能。Iperf具有多种参数和UDP特性,可以根据需要调整。Iperf可以报告带宽,延迟抖动和数据包丢失

TCP:
server(pc):  iperf -s -i 1
client(ls1b):  iperf -t 20 -i 1 -c 192.168.1.167 (pc-ip)

UDP:
server(pc): iperf  -u -s -i 1
client(ls1b): iperf -t 10 -i 1 -u -b 1000M  -c 192.168.1.90

3. #  ifconfig -a
eth0:Link encap:Ethernet  HWaddr 00:1e:64:63:ab:fe
inet addr:192.168.3.103  Bcast:192.168.3.255  Mask:255.255.255.0
inet6 addr: fe80::21e:64ff:fe63:abfe/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:70283 errors:0 dropped:0 overruns:0 frame:0
TX packets:46701 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:73276012 (73.2 MB)  TX bytes:6267375 (6.2 MB)

4. #  mii-tool -w -v  //更详细的用法 man mii-tool

5. ethtool是用来显示和更改网卡设置的工具 更详细的用法 man ethtool
# ethtool eth0   //显示网络端口设置功能
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes:   10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes:  10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Link partner advertised link modes:  Not reported
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: No
Speed: 10Mb/s
Duplex: Half
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
Link detected: no

# ethtool -i eth0  //显示跟硬件相关的信息
driver: r8169
version: 2.3LK-NAPI
firmware-version:
bus-info: 0000:05:00.0

6. # watch -n 1 “/sbin/ifconfig eth0 | grep bytes”

jQuery对象转成DOM对象: 
两种转换方式将一个jQuery对象转换成DOM对象:[index]和.get(index); 
(1)jQuery对象是一个数据对象,可以通过[index]的方法,来得到相应的DOM对象。 
如:var $v =$(“#v”) ; //jQuery对象 
var v=$v[0]; //DOM对象 
alert(v.checked) //检测这个checkbox是否被选中 
(2)jQuery本身提供,通过.get(index)方法,得到相应的DOM对象 
如:var $v=$(“#v”); //jQuery对象 
var v=$v.get(0); //DOM对象 
alert(v.checked) //检测这个checkbox是否被选中
DOM对象转成jQuery对象: 
对于已经是一个DOM对象,只需要用$()把DOM对象包装起来,就可以获得一个jQuery对象了。$(DOM对象) 
如:var v=document.getElementById(“v”); //DOM对象 
var $v=$(v); //jQuery对象 
转换后,就可以任意使用jQuery的方法了。

数据库

1.工作中数据大小超过可用内存 RAM
2.长短查询混合
3.写-写 冲突
4.大的联合查询占光内存

虚拟化

1.共享 HDD 存储,磁盘寻道挂起
2.云平台中的网络 I/O 波动

编程

1.线程:死锁、相对于事件驱动来说过于重量级、调试、线程数与性能比非线性
2.事件驱动编程:回调的复杂性、函数调用中如何保存状态(how-to-store-state-in-function-calls)
3.缺少profile工具、缺少trace工具、缺少日志工具
4.单点故障、横向不可扩展
5.有状态的应用
6.搓设计:一台机器上能跑,几个用户也能跑,几个月后,几年后,尼玛,发现扛不住了,整个架构需要重写。
7.算法复杂度
8.依赖于诸如DNS查找等比较搞人的外部组件
9.栈空间

磁盘

1.本地磁盘存取
2.随机磁盘读写 -> 磁盘寻道
3.磁盘碎片化
4.写入超过SSD容量的数据导致SSD硬盘性能降低
5.操作系统
6.内核缓冲刷入磁盘,填充linux缓冲区缓存
7.TCP缓冲区过小
8.文件描述符限制
9.功率分配

缓存

1.不使用memcached
2.HTTP中,header,etags,不压缩(headers, etags, not gzipping)
3.没有充分使用浏览器缓存功能
4.字节码缓存(如PHP)
5.L1/L2缓存,这是个很大的瓶颈。把频繁使用的数据保持在L1/L2中。设计到的方面很多:网络数据压缩后再发送,6.基于列压缩的DB中不解压直接计算等等。有TLB友好的算法。最重要的是牢固掌握以下基础知识:多核CPU、L1/L2,共享L3,NUMA内存,CPU、内存之间的数据传输带宽延迟,磁盘页缓存,脏页,TCP从CPU到DRAM到网卡的流程。

CPU

CPU 过载
1.上下文切换 -> 一个内核上跑了太多的线程,linux调度对于应用来说很不友好, 太多的系统调用, 等等…
2.IO 等待 -> 所有的CPU都挂起等待比较慢的IO
3.CPU 缓存: 缓存数据是一个为了平衡不同实例有不同的值和繁重的同步缓存数据保持一致,而精心设计的一个进程。
4.背板吞吐量

网络

1.网卡的最大输出带宽,IRQ达到饱和状态,软件中断占用了100%的CPU
2.DNS查找
3.丢包
4.网络路由瞎指挥
5.网络磁盘访问
6.共享SAN(Storage Area Network)
7.服务器失败 -> 服务器无响应

过程

1.测试时间 Testing time
2.开发时间 Development time
3.团队人数 Team size
4.预算 Budget
5.代码缺陷 Code debt

内存

1.内存溢出 -> 杀进程,进入 swap ,越来越慢
2.内存溢出导致磁盘频繁读写(swap相关)
3.内存库开销
4.内存碎片
5.Java 需要垃圾收集导致程序暂停
6.C 语言的 malloc 无法分配

在Javascript脚本里,一个cookie实际就是一个字符串属性。当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies

在Javascript脚本里,一个cookie 实际就是一个字符串属性。当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值。每个cookie除了 name名称和value值这两个属性以外,还有四个属性。这些属性是: expires过期时间、 path路径、 domain域、以及 secure安全。

Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

Path – 路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.zdnet.com/devhead /index.html 建立了一个cookie,那么在http://www.zdnet.com/devhead/目录里的所有页面,以及该目录下面任何子目录里的页面都可以 访问这个cookie。这就是说,在http://www.zdnet.com/devhead/stories/articles 里的任何页面都可以访问http://www.zdnet.com/devhead/index.html建立的cookie。但是,如果http: //www.zdnet.com/zdnn/ 需要访问http://www.zdnet.com/devhead/index.html设置的cookes,该怎么办?这时,我们要把cookies 的path属性设置成“/”。

在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子: 如果想让 http://www.zdnet.com/devhead/filters/ 和http://www.zdnet.com/devhead/stories/共享cookies,就要把path设成“/devhead”。
Domain – 域。指定关联的WEB服务器或域。值是域名,比如zdnet.com。这是对path路径属性的一个延伸。如果我们想让 catalog.mycompany.com 能够访问shoppingcart.mycompany.com设置的cookies,该怎么办? 我们可以把domain属性设置成“mycompany.com”,并把path属性设置成“/”。不能把cookies域属性设置成与设置它的服务器的 所在域不同的值。

Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是“secure”,或者为空。缺省情况下,该属性为空,也就是 使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本 地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的 cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。

:a.b.com和c.b.com两个站,建立方式如下:

a.b.com站下建a.html。关键代码如下:

  1. <script type=”text/javascript”>
  2. function setCookie(c_name,value,expiredays) {
  3. var exdate=new Date();
  4. exdate.setDate(exdate.getDate()+expiredays);
  5. alert(exdate.getDate()+expiredays);
  6. document.cookie=c_name+ “=” +escape(value)+((expiredays==null) ? “” : “;expires=”+exdate.toGMTString())+”;path=/;domain=b.com”;
  7. }
  8. window.onload=function(){
  9. setCookie(“listallwjh”,”sfwjh”);
  10. alert(“Cookie设置成功!”);
  11. }
  12. </script>

c.b.com站下建a.html。关键代码如下

 


  1. <script>
  2. function getCookie(c_name) {
  3. if (document.cookie.length>0)
  4. {
  5. c_start=document.cookie.indexOf(c_name + “=”);
  6. if (c_start!=-1)
  7. {
  8. c_start=c_start + c_name.length+1 ;
  9. c_end=document.cookie.indexOf(“;”,c_start);
  10. if (c_end==-1) c_end=document.cookie.length;
  11. return unescape(document.cookie.substring(c_start,c_end));
  12. }
  13. }
  14. return “”;
  15. }
  16. window.onload=function(){
  17. var c_name=”listallwjh”;
  18. if(getCookie(“listallwjh”)!=null){
  19. alert(getCookie(“listallwjh”));
  20. }
  21. }
  22. </script>

 

这两个一个也面是设置,一个是取,只要保证两个规则一样,就行。运行,结果:OK!

注:这两个方法有时候也可以写在一起,先判断cookie是否存在,在创建。

友情资料:

一、浏览器允许每个域名所包含的 cookie 数:Microsoft 指出 Internet Explorer 8 增加 cookie 限制为每个域名 50 个,但 IE7 似乎也允许每个域名 50 个 cookie( color=”#006da3″>《Update to Internet Explorer&rsquo;s Cookie Jar》)。

Firefox 每个域名 cookie 限制为 50 个。Opera 每个域名 cookie 限制为 30 个。Safari/WebKit 貌似没有 cookie 限制。但是如果 cookie 很多,则会使 header 大小超过服务器的处理的限制,会导致错误发生。注:每个域名 cookie 限制为 20 个将不再正确!

二、当很多的 cookie 被设置,浏览器如何去响应。除 (可以设置全部cookie,不管数量多少),有两个方法:最少最近使用(least recently used (LRU))的方法:当 Cookie 已达到限额,自动踢除最老的 Cookie ,以使给最新的 Cookie 一些空间。 Internet Explorer 和 Opera 使用此方法。

Firefox 很独特:虽然最后的设置的 Cookie 始终保留,但似乎随机决定哪些 cookie 被保留。似乎没有任何计划(建议:在 Firefox 中不要超过 Cookie 限制)。

三、不同浏览器间 cookie 总大小也不同:Firefox 和 Safari 允许 cookie 多达 4097 个字节, 包括名(name)、值(value)和等号。Opera 允许 cookie 多达 4096 个字节, 包括:名(name)、值(value)和等号。Internet Explorer 允许 cookie 多达 4095 个字节, 包括:名(name)、值(value)和等号。注:多字节字符计算为两个字节。在所有浏览器中,任何 cookie 大小超过限制都被忽略,且永远不会被设置。

当访问者首次访问页面时,他或她也许会填写他/她们的名字。名字会存储于 cookie 中。当访问者再次访问网站时,他们会收到类似 “Welcome John Doe!” 的欢迎词。而名字则是从 cookie 中取回的。这就是Cookie,希望本文能帮助到你。

php 对二维数组的排序 *** 对二维数组进行排序* @param $array* @param $keyid 排序的键值* @param $order 排序方式 & 39;asc&
php 对二维数组的排序
/**
 * 对二维数组进行排序
 * @param $array
 * @param $keyid 排序的键值
 * @param $order 排序方式 ‘asc’:升序 ‘desc’:降序
 * @param $type  键值类型 ‘number’:数字 ‘string’:字符串
 * @example @sort_array($list, $get[‘sort’], $get[‘order’], “string”);
 */
function sort_array(&$array, $keyid, $order = ‘asc’, $type = ‘number’) {
if (is_array($array)) {
foreach($array as $val) {
$order_arr[] = $val[$keyid];
}
$order = ($order == ‘asc’) ? SORT_ASC: SORT_DESC;
$type = ($type == ‘number’) ? SORT_NUMERIC: SORT_STRING;
array_multisort($order_arr, $order, $type, $array);
}
}