[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:20036] Re: mnews の起動が遅い
吉藤英明@東北大学情報科学です。
In article <200001120648.PAA13588@xxxxxxxxxxxxxxxxxxxx> (at Wed, 12 Jan 2000 15:47:19 +0900), shoji@xxxxxxxxxxxxxxxxxxxx says:
> 最近の mnews は起動がとても遅くなったのですが、
> これを回避する方法はあるのでしょうか?
> # IPv6 関連の影響かな?
#IPv6 まわりでは libc6 のバージョンも重要かも。
そういわれてみるとそういう気もします。
#DNS の AAAA と A を両方見にいきますし。
1. どのあたりが遅いでしょう?
2. 2度目の起動はどうでしょう? (私の所では早くなる)
3. IPアドレスを指定するとどうでしょう?
% mnews -D xx.xx.xxx.xx -M xx.xx.xx.xx -P xx.xx.xx.xx
これで早くなるなら -4, -6 とかいう起動オプションを用意することで
回避できるかもしれませんが、たぶん、私はやりません。
#美しくない。
4. 以下のコードも遅いでしょうか? (1度, 2度, ...)
% ./a.out nntp.some.where
% ./a.out xx.xx.xx.xx
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
struct AList{
int type;
char *name;
};
struct AList sock_alist[] = {
{ 0, "Unspecified" },
{ SOCK_STREAM, "SOCK_STREAM" },
{ SOCK_DGRAM, "SOCK_DGRAM" },
{ SOCK_RAW, "SOCK_RAW" },
{ -1, NULL }
};
struct AList protocol_alist[] = {
{ PF_UNSPEC, "PF_UNSPEC" },
{ PF_LOCAL, "PF_LOCAL" },
{ PF_INET, "PF_INET" },
{ PF_INET6, "PF_INET6" },
};
char *find_index(struct AList *list, int i){
struct AList *p;
for (p=list; p->name; p++)
if (p->type == i) return (p->name);
return(NULL);
}
int main(int argc, char *argv[]){
char *name = "localhost";
char *service = NULL;
struct addrinfo hints;
struct addrinfo *res;
int j;
int status;
if (argc>1) name = argv[1];
if (argc>2) service = argv[2];
printf ("getaddrinfo(\"%s\",\"%s\",&hints,&res)\n",
name, service);
for(j=0; sock_alist[j].name; j++){
res = NULL;
memset(&hints,0,sizeof(hints));
hints.ai_flags = AI_CANONNAME;
hints.ai_family = PF_UNSPEC;
hints.ai_socktype = sock_alist[j].type;
status = getaddrinfo(name,service,&hints,&res);
printf ("\tsocktype=%d(%s): [%d]%s\n",
sock_alist[j].type,
sock_alist[j].name,
status,
(status ? gai_strerror(status) : "ok")
);
if(!status && res){
struct addrinfo *p;
char hostbuf[1024], portbuf[1024];
for (p = res; p; p = p->ai_next) {
getnameinfo(p->ai_addr, p->ai_addrlen,
hostbuf, sizeof(hostbuf),
portbuf, sizeof(portbuf),
NI_NUMERICHOST|NI_NUMERICSERV);
printf ("\t\tfamily=%d(%s) addr=%s port=%s canonname=%s\n",
p->ai_family, find_index(protocol_alist, p->ai_family),
hostbuf, portbuf, p->ai_canonname);
}
freeaddrinfo(res);
}
}
}
--
吉藤英明 (YOSHIFUJI,Hideaki) <yoshfuji@xxxxxxxxxxxxxxxxx>
Web Page: http://www.ecei.tohoku.ac.jp/%7Eyoshfuji/
PGP5i FP: F731 6599 5EB2 BBA7 1515 1323 1806 A96F 5700 6B25