首页 文章 精选 留言 我的

精选列表

搜索[网络端点],共10000篇文章
优秀的个人博客,低调大师

解决linux下网络丢包问题处理

最近业务上老有问题,查看发现overruns值不断增加,学习了一下相关的知识。 发现数值也在不停的增加。G 了一下,发现这些 errors, dropped, overruns 表示的含义还不大一样。 eth2 Link encap:Ethernet HWaddr 00:8C:FA:F1:DA:78 inet addr:10.249.2.112 Bcast:10.249.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:26191508237 errors:0 dropped:0 overruns:45732243 frame:0 TX packets:20141298524 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4684832167216 (4.2 TiB) TX bytes:4670328443919 (4.2 TiB) Memory:c7200000-c7280000 RX errors: 表示总的收包的错误数量,这包括 too-long-frames 错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。 RX dropped: 表示数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。 RX overruns: 表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。很明显,overruns 的增大意味着数据包没到 Ring Buffer 就被网卡物理层给丢弃了,而 CPU 无法即使的处理中断是造成 Ring Buffer 满的原因之一,上面那台有问题的机器就是因为 interruprs 分布的不均匀(都压在 core0),没有做 affinity 而造成的丢包。 RX frame: 表示 misaligned 的 frames。 1、先查看硬件情况 一台机器经常收到丢包的报警,先看看最底层的有没有问题: # ethtool eth2 | egrep 'Speed|Duplex' Speed: 1000Mb/s Duplex: Full # ethtool -S eth2 | grep crc rx_crc_errors: 0 Speed, Duplex, CRC 之类的都没问题,基本可以排除物理层面的干扰。 2、通过 ifconfig 可以看到 overruns 字段在不停的增大: for i in `seq 1 100`; do ifconfig eth2 | grep RX | grep overruns; sleep 1; done 这里一直增加 RX packets:26191785302 errors:0 dropped:0 overruns:45732243 frame:0 3、查看buffer大小 找了一些国外的文章,可以通过ethtool来修改网卡的buffer size ,首先要网卡支持,我的服务器是是INTEL 的1000M网卡,我们看看ethtool说明 -g –show-ringQueries the specified ethernet device for rx/tx ring parameter information. -G –set-ringChanges the rx/tx ring parameters of the specified ethernet device. 查看当前网卡的buffer size情况ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 256 RX Mini: 0 RX Jumbo: 0 TX: 256 4、修改buffer size大小 ethtool -G eth2 rx 2048 ethtool -G eth2 tx 2048 查看丢包 [root@appserver1 network-scripts]# cat /proc/net/dev | column -t Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo:1697064305645 4937104295 0 0 0 0 0 0 1697064305645 4937104295 0 0 0 0 0 0 eth0:72829268758 343814516 0 21338 0 0 0 9764241 74743576507 418943369 0 0 0 0 0 0 eth1:5826509023 48719872 0 0 0 0 0 11358883 127451707 1107964 0 0 0 0 0 0 eth2:4684766978372 26191366713 0 0 45732243 0 0 278436828 4670300836866 20141168183 0 0 0 0 0 0 eth3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 bond0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [root@appserver1 network-scripts]# netstat -i | column -t Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth2 1500 0 26191244868 0 0 45732243 20141056331 0 0 0 BMRU lo 16436 0 4937053994 0 0 0 4937053994 0 0 0 LRU 问题:接受队列溢出产生错误,当抵达的包多于内核可以处理的包时,计算机会产生漫溢(overruns)。输入队列达到其上限(max_backlog)时,多抵达的那些包会全部被丢弃掉。

优秀的个人博客,低调大师

Android 网络编程--URL互联网资源

1.加入权限 <uses-permission android:name="android.permission.INTERNET"/> 2.Layout设计 1 2 3 4 5 6 7 8 9 10 11 <RelativeLayout xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" android:layout_width= "match_parent" android:layout_height= "match_parent" > <ImageView android:id= "@+id/imageView" android:layout_width= "wrap_content" android:layout_height= "wrap_content" /> </RelativeLayout> 3.Code设计 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 public class MainActivity extends Activity { private Bitmap bitmap; private ImageView show; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1 ) { show.setImageBitmap(bitmap); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); show = (ImageView) this .findViewById(R.id.imageView); new Thread() { @Override public void run() { super .run(); try { URL url = new URL( "http://a.hiphotos.baidu.com/image/h%3D220/sign=bd9eb2ea07087bf462ec50ebc2d2575e/d439b6003af33a87495b8dbbc35c10385343b559.jpg" ); InputStream inputStream = url.openStream(); bitmap = BitmapFactory.decodeStream(inputStream); handler.sendEmptyMessage( 1 ); inputStream.close(); } catch (Exception e) { e.printStackTrace(); } }; }.start(); } } 本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/p/5124975.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

iOS网络编程-iCloud文档存储编程实例

iCloud文档存储编程相对键值数据存储而言比较复杂,涉及到自定义文档类、获得iCloud文档目录、查找Ubiquity容器中的文档、保存文档和解决文档冲突等内容。 实例:iCloud文档存储编程设计 实例介绍一下iCloud文档存储编程过程,画面中有一个文本框和一个按钮控件,在设备1输入内容,点击“保存数据”按钮,将数据保存iCloud服务器。右图是设备2画面,过几秒钟后设备2上会读取iCloud服务器端数据,并显示在文本框中。 配置Xcode工程 编写iCloud文档存储编应用程序也需要在Xcode工程中进行一些配置,选择TAGETS→MyNotes→Summary→Entitlements 在图中UbiquityContrainers添加com.51work6.MyNotes,这是Ubiquity容器标识,可以有多个Ubiquity容器标识,这个容器标识代表着不同的目录。com.51work6.MyNotes代表目录如下所示: /var/mobile/Library/MobileDocuments/98Z3R5XU29~com~51work6~MyNotes/ 其中的98Z3R5XU29是在iOS开发者配置门户网站创建AppID时候生成的,它被称为TeamID。 如果应用中没有使用iCloud键值数据存储key-ValueStore可以不用配置。 自定义文档类 我 们需要自己封装一个文档类,它继承抽象类UIDocument,而UIDocument实现NSFilePresenter协议。实现 NSFilePresenter协议的类,它所代表的文件和目录可以被查看和编辑,这些NSFilePresenter实现类与文件协调者类 NSFileCoordinator结合使用,可以协调管理文件或目录。 这个类我们命名为MyCloudDocument,MyCloudDocument的代码如下: #import<UIKit/UIKit.h> @interfaceMyCloudDocument:UIDocument① @property(strong,nonatomic)NSString*contents; @end #import”MyCloudDocument.h” @implementationMyCloudDocument //加载数据 -(BOOL)loadFromContents:(id)contentsofType:(NSString*)typeNameerror:(NSError**)outError② { if([contentslength]>0) { self.contents=[[NSStringalloc]initWithData:contentsencoding:NSUTF8StringEncoding];③ } returnYES; } //保存数据 -(id)contentsForType:(NSString*)typeNameerror:(NSError**)outError④ { return[self.contentsdataUsingEncoding:NSUTF8StringEncoding];⑤ } @end 获得iCloud文档目录 iCloud文档目录是指在Ubiquity容器下的Document目录,因此获得了Ubiquity容器的根目录,就可以获得的iCloud文档目录了。 ViewController.m中的ubiquitousDocumentsURL方法可以iCloud文档目录: //请求本地Ubiquity容器,从容器中获得Document目录URL -(NSURL*)ubiquitousDocumentsURL{ NSFileManager*fileManager=[NSFileManagerdefaultManager];① NSURL*containerURL=[fileManager URLForUbiquityContainerIdentifier:@"98Z3R5XU29.com.51work6.MyNotes"];② containerURL=[containerURLURLByAppendingPathComponent:@"Documents"];③ returncontainerURL; } 查找Ubiquity容器中的文档 获得iCloud文档目录后,我们需要找到容器中的文件。查询容器中的文件需要注册两个广播通知: NSMetadataQueryDidFinishGatheringNotification查询结束发出通知; NSMetadataQueryDidUpdateNotification查询结束,进入开始更新阶段发出的通知; ViewController.m中注册和解除通知代码如下: -(void)viewDidLoad { [superviewDidLoad]; //为查询iCloud文件的变化,注册通知 [[NSNotificationCenterdefaultCenter]addObserver:self selector:@selector(updateUbiquitousDocuments:) name:NSMetadataQueryDidFinishGatheringNotificationobject:nil]; [[NSNotificationCenterdefaultCenter]addObserver:self selector:@selector(updateUbiquitousDocuments:) name:NSMetadataQueryDidUpdateNotificationobject:nil]; //查询iCloud文件的变化 [selfsearchFilesOniCloud]; } -(void)didReceiveMemoryWarning { [superdidReceiveMemoryWarning]; [[NSNotificationCenterdefaultCenter]removeObserver:self]; } 保存文档 保存文档很简单,它是在ViewController.m中的saveClick:方法处理的,saveClick:方法是点击按钮时候触发: -(IBAction)saveClick:(id)sender{ _myCloudDocument.contents=_txtContent.text; [_myCloudDocumentupdateChangeCount:UIDocumentChangeDone]; [_txtContentresignFirstResponder]; } 保 存成功之后我们可以在其它设备上看看是否iCloud中已经有abc.txt文档了。如果使用MacOSX系统电脑,我们可以在“系统偏好设置”中打 开iCloud对话框,点击“管理”按钮可以打开iCloud空间管理对话框,其中的MyNotes是我应用名,右边的abc.txt创建的文件。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1190974,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册