`
cryolite
  • 浏览: 581185 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在MacOSX上测试Mochiweb遇到的一些问题

阅读更多
A Million-user Comet Application with Mochiweb, Part 1
在MacOSX平台上遇到的一些问题:

一. IPv6导致的问题
在MacOS下测试时报错econnrefused,mochi-urls.txt文件的url不能用localhost,得用127.0.0.1才行

在Erlang的邮件列表中找到了解释:
We have seen the same issue with CouchDB. What we found out
is that in our case localhost was not only resolving to 127.0.0.1 (IPv4)
but also ::1 (IPv6) and that http:request() would try to connect to
::1 where no service was listening.

Erlang的http模块缺省是打开IPv6模式的,当测试程序通过http模块连接localhost时,连接的地址是IPv6的::1地址,但是mochi没有在此监听,所以连接出错 {error,econnrefused}

解决方法两种:
1. 将mochi-urls.txt中的地址都改成127.0.0.1
2. 在http:request(…)运行之前调用http:set_options([{ipv6,disabled}]),关闭测试程序的IPv6模式,使用IPv4模式

理论上还有一种方法:让mochi服务器开启IPv6模式监听,这个我不知道这么开,
参考
You should teach Yaws to listen also on IPv6 - “localhost” resolves not
only to IPv4 127.0.0.1, but also to IPv6 ::1.


二. 进程能打开的文件描述符数量的限制
MacOSX下缺省能同时打开的文件描述符最大数是256个,使用 ulimit -a命令查看
$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) 6144
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 266
virtual memory          (kbytes, -v) unlimited
使用ulimit -n XXXX设置,但最大数量还是不能超过10240

查看内核每进程最大文件数:
$ sysctl kern.maxfiles kern.maxfilesperproc
kern.maxfiles: 12288
kern.maxfilesperproc: 10240

增大每进程最大文件数:
$ sudo sysctl -w kern.maxfilesperproc=20480 kern.maxfiles=22528

然后设置
$ ulimit -n 20480
注意ulimit只在每个shell窗口生命周期内有效,当新开一个shell后,得再次设置
sysctl做的修改没有这个问题

三、调节IP端口号范围,不然最多只能有15K个连接
缺省动态端口号从49152开始,改成2000后最多可以有63K个连接
sysctl -w net.inet.ip.portrange.hifirst=2000 net.inet.ip.portrange.first=2000
分享到:
评论

相关推荐

    从Windows的角度看MacOSX上的软件开发兼谈跨平台开发的一些可行方向资料.pdf

    在Windows平台上从事软件开发的人员转向MacOSX时,会遇到一些关键的差异和挑战。首先,MacOSX基于UNIX,但又并非标准的UNIX,它的核心XNU结合了Mach微内核和FreeBSD用户层,这使得MacOSX具备了一般UNIX环境下的许多...

    MacOSX 隐藏和显示隐藏文件小工具

    在MacOSX操作系统中,隐藏和显示隐藏文件是日常使用中的常见操作,尤其对于系统维护、软件开发或者高级用户来说更为重要。隐藏文件通常包含系统关键配置和应用程序的内部数据,一般情况下不需要直接访问。然而,有时...

    VMware解锁MacOSX的插件

    3. **性能和稳定性**:尽管可以在 VMware 中运行macOS,但性能可能不如在真正的苹果硬件上运行得好,而且可能会遇到一些稳定性问题。此外,某些macOS的功能可能无法正常工作,或者需要额外的驱动程序支持。 4. **...

    从Windows的角度看MacOSX上的软件开发兼谈跨平台开发的一些可行方向.pdf

    摘要:本文从 Windows 的角度出发,探讨 MacOSX 上的软件开发,特别是跨平台开发的一些可行方向。文章假设读者以往采用微软的开发工具,并以 C/C++/C# 的任一种组合作为开发语言,旨在指出 Windows 和 MacOSX 在架构...

    MacOSX安装工具

    "MacOSX安装工具"是指一系列用于在Mac设备上安装或升级MacOSX系统的必备软件和实用程序。在安装过程中,这些工具能够帮助用户简化流程,解决可能遇到的问题。 首先,安装MacOSX系统通常需要一个启动盘或恢复驱动器...

    从Windows的角度看MacOSX上的软件开发兼谈跨平台开发的一些可行方向归类.pdf

    【标题】: "从Windows的角度看MacOSX上的软件开发兼谈跨平台开发的一些可行方向" 【描述】: 本文探讨了从Windows开发者视角切换到MacOSX平台进行软件开发时需要注意的关键点,以及跨平台开发的有效策略。 【标签】...

    __MACOSX.rar

    这些工具可能帮助用户解决日常使用中遇到的问题,提升效率,或者进行系统级别的调试和修改。 标签“MAC”进一步确认了这些资源是专为Mac OS设计的。Mac OS是苹果公司为其Macintosh系列计算机开发的操作系统,以其...

    PL2303_MacOSX usb转串口驱动

    对于初次使用或遇到问题的用户来说,这份指南是非常有价值的参考资料。 2. "PL2303_MacOSX_1.6.1_20160309.pkg":这是实际的驱动程序安装包,用户可以通过双击该文件来启动安装流程。pkg是Apple的包安装程序格式,...

    PL2303_MacOSX10.6

    在MacOSX 10.6(雪豹)这样的较旧操作系统上,可能需要特定的驱动程序来确保兼容性。 在提供的压缩包文件中,我们看到以下几个关键组件: 1. **PL2303_1.4.0.dmg**:这是一个DMG文件,是苹果Mac OS X系统中的磁盘...

    android-sdk-macosx.zip

    5. **Emulator**:Android Emulator允许开发者在计算机上模拟Android设备,进行应用测试和调试。macOS版的SDK中,Emulator依赖于HAXM(Intel Hardware Accelerated Execution Manager)来提升性能。 二、macOS特定...

    phantomjs-2.1.1-macosx

    在标题"phantomjs-2.1.1-macosx"中,我们看到的是PhantomJS的一个特定版本,即2.1.1,针对Mac OS X操作系统优化。 在描述"phantomjs-2.1.1-macosx.zip 官方下载的"中,指出这是从官方渠道获取的压缩包文件,意味着...

    jdk-8u131-macosx-x64

    jdk-8u131-macosx-x64jdk-8u131-macosx-x64jdk-8u131-macosx-x64jdk-8u131-macosx-x64jdk-8u131-macosx-x64jdk-8u131-macosx-x64jdk-8u131-macosx-x64jdk-8u131-macosx-x64jdk-8u131-macosx-x64jdk-8u131-macosx-x64...

    Mac jre-macosx-x64 .rar

    安装向导通常会询问一些基本问题,如安装位置、是否创建桌面快捷方式等,并自动处理所有必要的文件复制和系统设置更改。 **标签 "MAC JRE"** 强调了这是专门针对Mac操作系统的Java运行环境。由于Java的“一次编写,...

    phantomjs-2.1.1-macosx.zip

    在Mac上安装和使用PhantomJS可能与其他操作系统有所不同,需要考虑系统兼容性和依赖库的问题。不过,提供预编译的二进制文件,如这个ZIP压缩包,可以简化安装过程。 至于压缩包内的"phantomjs-2.1.1-macosx",通常...

    android-sdk24.4.1-macosx.zip

    "android-sdk24.4.1-macosx.zip"是一个专为Mac用户设计的特定版本的Android SDK,包含了版本号为24.4.1的SDK组件,对于在Mac环境下进行Android应用开发的程序员来说,这是一个必不可少的下载资源。 Android SDK的...

    MacOSX.10.14.sdk

    MacOSX.10.14.sdk压缩包。用于xcode中SDKs中的资源。 解决出现缺少MacOSX10.14的问题

    secoclient-macosx-7.0.2.33

    在MacOS Big Sur上能正常运行,意味着该软件已经经过兼容性测试,能够与最新版的苹果操作系统无缝配合,提供稳定的服务。MacOS Big Sur作为苹果的一个重要更新,引入了多项改进和新特性,包括更现代化的界面设计、更...

    jdk-8u251-macosx-x64.zip

    Java Development Kit(JDK)是Java编程语言的开发和运行环境,它包含了Java虚拟机(JVM)、编译器(javac)、Java类库以及各种工具,如Javadoc和JAR,使得开发者能够编写、测试和部署Java应用程序。在本案例中,...

    从Windows的角度看MacOSX上的软件开发兼谈跨平台开发的一些可行方向归纳.pdf

    - **兼容性问题**:每个平台都有其特定的库和API,因此确保代码在不同平台上行为一致可能需要额外的适配工作。 - **性能优化**:跨平台开发可能会牺牲一些性能,因为代码需要在多种环境中运行,需要对性能进行微调...

Global site tag (gtag.js) - Google Analytics