首页 文章 精选 留言 我的

精选列表

搜索[问题报告],共10000篇文章
优秀的个人博客,低调大师

端口丢包问题

最近发现核心交换机有几个下联二层交换机的端口出现了很多丢包,从监控平台上显示如下: 显示为7609的receive discards,登陆上交换机查看端口如下: 从上图中看到有很多数据包overrun(2294627),说明此端口的buffer已经耗尽,其将此buffer里的数据送往PFC的速度慢于此端口的接收数据报的速度,因此这些数据报就会丢弃,如上图Input queue有2289265 drops。overrun的官方解释如下: Q. What are overruns on a serial interface? A.Overruns appear in the output of theshow interface Serial 0command when the serial receiver hardware is unable to hand received data to a hardware buffer because the input rate exceeds the receiver's ability to handle the data. This occurs due to a limitation of the hardware. Overruns occur when the internal First In, First Out (FIFO) buffer of the chip is full, but is still tries to handle incoming traffic. The serial controller chip has limited internal FIFO. Some chips, for example, have only 256 bytes of buffer space. Data from the network is received into the buffer, whereupon the chip attempts to move the data from the buffer to the router's shared memory for the CPU to process. If the chip is not able to move the data from its internal FIFO buffer into shared memory faster than the rate at which data is received on the interface, then the internal FIFO buffer is full, incoming data is dropped, and the overrun counter is incremented. ------------摘自 [url]http://www.cisco.com/en/US/tech/tk801/tk36/technologies_q_and_a_item09186a008014f919.shtml[/url] 而同时由上图可以看出此端口没有启用flow-control特性,flow-control的官方解释如下: 因此启用flow-control特性可以避免overrun的现象。但是从根本上来考虑此端口为GE端口速率为1000Mbps,且为full-duplex。而且当时此端口的input速率为22.8Mbps,远没有达到GE的上限。而从硬件架构来看,也远没有达到瓶颈。下为硬件参数显示信息: 查看了一下此板卡WS-X6548-GE-TX的结构图,表示每连续8个GE端口共享1G,而且此8GE端口共享16KB的RX BUFFER和1M的TX/RX BUFFER。所以从结构上来看,应该没有达到性能瓶颈的。 补充: 本周通过与cisco case中心交涉,提交几个show命令显示结果给case中心,然后在case中心的协助下:完成以下2种测试: 1,disable head of line blocking which will utilize the interface buffers instead of the shared buffers. This will result in only the single over utilized port having drops。查看了一下cisco网站,意思就是说启用head of line blocking使得此8个一组端口的每个端口都启用自己的32kb buffer,而不使用共享的1Mb buffer,这样就能看出到底是哪个端口overrun比较多。详见 [url]http://www.cisco.com/en/US/products/hw/switches/ps700/products_tech_note09186a00801751d7.shtml[/url] 配置命令如下: 6500(config)#service internal //此命令表示可以启用内部命令,注意内部命令TAB或者?都无效,直接敲入就是了。 6500(config)#interface gigabit 1/1 6500(config-if)#hol-blocking disable %HOL Blocking is Disabled on: Gi1/1 Gi1/2 Gi1/3 Gi1/4 Gi1/5 Gi1/6 Gi1/7 Gi1/8 这样可以找出来到底是哪一个端口过多overrun,然后将此端口挪到另外一组去。 2,try to config "hold queue 4096 in" to raise the hold queue. please refer to : [url]http://www.cisco.com/en/US/docs/ios/12_3/interface/command/reference/int_d1g.html#wp1142192[/url] 在软件队列处理上通过“hold queue 4096 in”将端口的hold queue调高,看看是否有效果。实际上没有多大效果,依然有很大的丢包。 综合以上测试,case中心给出答复如下: 丢包现象为WS-X6548-GE-TX板卡性能瓶颈所致,即WS-X6548-GE-TX的端口buffer太小,请换成6148A或者6748板卡。下面比较一下此三个板卡的硬件架构: 1),X6548-GE:每8个端口(1-8,9-16,17-24...)共享16KB RX buffer和1MB的RX/TX buffer,并且每8个端口共享1GE带宽,此板卡为fabric-enabled,可以与引擎通过一个8GE的CrossBar或者32GE的系统共享Bus相连; 2),X6148A-GE:每8个端口共享160KB RX buffer,每一个端口独享5.2MB的TX buffer,并且每8个端口共享1GE带宽,但是此板卡为nonfabric-enabled,只能通过32GE的系统共享Bus相连; 3),X6748-GE:每个端口独享166KB的RX buffer和1.164MB的TX buffer,并且此板卡为fabric-enabled,可以与引擎通过每24个端口(1-24,25-48)共享20GE的CrossBar相连或者48GE端口共享32GE的系统共享Bus相连。 本文转自 chris_lee 51CTO博客,原文链接:http://blog.51cto.com/ipneter/92240,如需转载请自行联系原作者

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

nginx的502问题

1.配置错误 因为nginx找不到php-fpm了或者socket文件权限不对,所以报错,一般是fastcgi_pass后面的路径配置不当,后面可以是socket或者是ip:port,从php5.4版本之后如果使用socket方式,默认权限给的比较低,所以需要把监听权限改为777,对应配置为 listen.mode=0777 2.资源耗尽 lnmp架构在处理php时,nginx直接调取后端的php-fpm服务,如果nginx的请求量偏高,我们又没有给php-fpm配置足够的子进程,那么php-fpm就会资源耗尽,一旦资源耗尽nginx找不到php-fpm就会出现502错误 解决方案 去调整php-fpm.conf中的pm.max_children数值,使其增加,但是也不能无限增加,毕竟资源有限,一般4G内存机器如果跑php-fpm和nginx,不跑mysql可以设置为150,8G为300以此类推 3.其它错误 除了上面的两种错误还有其他的原因很少有,我们可以借助nginx的错误日志来进行排查vim /usr/local/nginx/logs/nginx_error.log 我们也可以给日志定义级别vim/usr/local/nginx/conf/nginx.conf 找到error_log,默认是crit最严谨的就行,也可以改成debug显示的信息最全面,但是很容易撑爆我们的磁盘。

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

Android 6.0 权限问题

Android6.0的运行时权限细节就不赘述了,详细可见文末参考资料的第2篇,详细讲解下于此相关的三个api(个人理解)。 ContextCompat.checkSelfPermission()//检查权限 ActivityCompat.requestPermissions()//请求权限 onRequestPermissionsResult()//回调函数 1. checkSelfPermission 函数定义: 该函数返回一个int,如果返回的整形值等于PackageManager.PERMISSION_GRANTED说明已经拥有改权限,如果返回值等于PackageManager.PERMISSION_DENIED说明没有拥有权限。 注:PackageManager.PERMISSION_GRANTED和PackageManager.PERMISSION_DENIED是PackageManager的两个int常量,专门用于表示是否拥有权限。 2.requestPermissions 第一步检查权限的结果如果是PackageManager.PERMISSION_GRANTED,那么该干嘛干嘛去,因为你已经拥有改权限(例如使用摄像头),如果检查结果是PackageManager.PERMISSION_DENIED,那么就要申请到权限才能干你想干的。 函数定义: void requestPermissions (Activity activity, String[] permissions, int requestCode) 主要说明该函数的三个参数(最让我难以理解的是第三个参数) 1.activity activity就是要申请权限的activity,写this就可以。 2.permissions 这是一个String数组,该数组包含我们要申请的权限列表,比如要申请的权限有:Manifest.permission.READ_CONTACTS等好几个,就把这些权限(String)添加到该数组中。 注:这说明可以批量申请权限 3.requestCode 这是一个int,是程序猿自定义的一个参数,用法如下: private static final int REQUEST_PERMISSION_CAMERA_CODE = 1; requestPermissions( this, new String[]{Manifest.permission.CAMERA}, REQUEST_PERMISSION_CAMERA_CODE); 那么该参数有何用呢?请看第三个函数onRequestPermissionsResult。 3.onRequestPermissionsResult 第二个函数(requestPermissions)执行完之后,会回调onRequestPermissionsResult,把请求结果告诉请求者,成或者不成总得有个说法不是!程序猿需要重写这个方法,对不同的结果执行不同的对策。 @Override public void onRequestPermissionsResult( int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { //仔细看英文注释,这是官方文档的例子,注释写的很好 case REQUEST_PERMISSION_CAMERA_CODE: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the // contacts-related task you need to do. } else { // permission denied, boo! Disable the // functionality that depends on this permission. } return; } // other 'case' lines to check for other // permissions this app might request } } 注意case之后的代码,这就是我们之前定义的那个常量,对了,他的作用就是定位你申请的是那个权限,前面也说了,可以一次申请多个权限,那么怎么对应我们申请的权限和申请结果呢?就靠这个int常量了。 参考资料(绝对干货): http://blog.csdn.net/lmj623565791/article/details/50709663 https://developer.android.com/training/permissions/requesting.html?hl=zh-cn#perm-request

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

OpenRouter 发布 100 万亿 token AI 使用状态报告

OpenRouter 发布了一项研究,基于其平台上收集的超过 100 万亿个真实使用 token,分析了大型语言模型(LLMs)在不同任务、地区和时间段内的使用情况。研究显示,自2024年12月推出的首个广泛采用的推理模型 o1以来,LLMs 的使用方式发生了显著变化。 研究指出,开放权重模型的使用呈现出显著增长,特别是在创意角色扮演和编程辅助等领域,超出了人们对以生产力任务为主的预期。此外,研究发现,早期用户的参与度显著高于后续用户,这种现象被称为 “灰姑娘的玻璃鞋效应”,强调了用户需求与模型特性之间的早期对接对于保持用户粘性的重要性。 通过对数据的深度分析,研究团队揭示了多种使用模式,包括开源与闭源模型的使用趋势、全球范围内的使用差异以及与价格和新模型发布的关系。这一实证研究填补了关于 LLMs 使用情况的知识空白,强调了开发者和用户在实际应用中如何复杂多样地互动。 研究采用了 OpenRouter 平台的数据,提供了一个关于如何使用这些模型的独特视角,旨在为未来模型的设计和部署提供数据支持。分析还涵盖了用户如何在不同地区选择模型,以及在长时间内保持使用的原因。

资源下载

更多资源
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文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

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

用户登录
用户注册