藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 系統管理


    

藍森林 http://www.lslnet.com 2006年8月08日 13:08


socket()的問題請教大家

在程序中有以下語句:
socket(AF_UNIX, SOCK_STREAM, 0);
此程序可正常執行;當sco系統中運行50個該程序後,此函數返回-1。errno=2;
請問各位大蝦解決方法。謝謝先!

socket()的問題請教大家

調整NOFILES,你需要的socket個數加上20一般就差不多了,20個給系統用
對於需要很多文件句柄的大應用(凡是返回fd的系統調用都會佔一個文件系統句柄),
建議直接調到512以上

socket()的問題請教大家

-->

NOFILES早已改為2000,而且作了測試程序,不停調socket(),至少能循環1000次,但不知為什麼啟動此進程50個就不行呢?跟蹤程序中socket()的成功返回值最大也就200多呀。
另外擴過內存,一點影響也沒有。

socket()的問題請教大家

還有MAXUP啊,一個進程佔一個,當然用socket的還有Streams參數需要設置
檢查-1時的全局變量errno等於多少
可用perror打印錯誤原因,然後再調整對應參數,肯定是內核資源配置不足的原因

socket()的問題請教大家

謝謝CNL版主,我也覺得是配置的問題。但是NOFILES=2000,MAXUP=500都不小了,以下是mtune中stream的設置是系統缺省值沒改過,好像也不小。請CNL版主再幫我看看還有什麼可改的?
* Streams Parameters
NSTREAM           64          1          32768
NSTRPUSH         9            9          9
NMUXLINK         192         1          4096
STRMSGSZ         16384     4096    524288
STRCTLSZ          1024       1024    1024
STRMAXBLK        524288  4096     524288
NSTRPAGES        500         0          8000
STRSPLITFRAC    80           50       100
NLOG                 3              3         3
NUMSP               64           1          256
NUMTIM             16           1          8192
NUMTRW           16            1          8192

另外:錯誤碼為2,即ENOENT (/* No such file or directory  )。

socket()的問題請教大家

等出現-1時
# netstat -m
看最後一列fail,如果有調整對應的內核參數
NSTREAM的默認值一般都不夠,需要加大。

另外正常情況socket調用失敗errno也不應該是-2
在socket調用=-1後直接用perror("socket")看具體錯誤信息,
我懷疑你程序其他地方寫的有問題。



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com