আমার হোস্টনাম রেজোলিউশনটি কেন এত দিন নিচ্ছে?


16

বেশ কয়েক মাস আগে আমি লক্ষ্য করেছি যে আমার পাঠ্য সম্পাদক (ইমাস) এবং আইডিই (ইন্টেলিজ) শুরু করতে সত্যিই দীর্ঘ সময় নিচ্ছে। সময়টি ডিএনএস সার্ভারের ওএস এক্সের ব্যবহারের ভিত্তিতে পরিবর্তিত হয়েছিল।

যখন কোনও প্রকল্পের পরীক্ষার স্যুটটি ধীরে ধীরে চলছিল তখন আমি বিষয়টি আলাদা করতে সক্ষম হয়েছি। আমি (উচ্চ স্তরের) অপরাধীকে কল হতে দেখেছি socket.getfqdn()

ওএস এক্স 10.10.2 এ টার্মিনালে নিম্নলিখিত কমান্ডটি চালনা করে সমস্যাটি দেখায়:

$ time python -c 'import socket; socket.getfqdn()'
python -c 'import socket; socket.getfqdn()'  0.02s user 0.00s system 0% cpu 5.122 total

আমি কোডটি খুঁজে পেয়েছি যা কল করার পরে চলে socket.getfqdn()এবং দেরী দ্বারা সৃষ্ট হয় getaddrinfo(3)। আমি একটি ছোট প্রোগ্রাম লিখেছি যা সমস্যাটি পৃথক করে এবং gai_strerror(3)এই বার্তাটি সরবরাহ করে:

$ time ./hostinfo
Hostname: MacBook-Pro.local
getaddrinfo: nodename nor servname provided, or not known
./hostinfo  0.00s user 0.00s system 0% cpu 5.101 total

দেখে মনে হচ্ছে বিলম্বটি সময় শেষ হওয়ার জন্য ডিএনএস ক্যোয়ারীর জন্য অপেক্ষা করছে। উপরের ফলাফলগুলি গুগলের সর্বজনীন ডিএনএস সার্ভার ব্যবহার করছিল। আমি যদি আমার আইএসপির ডিএনএস সার্ভার ব্যবহার করি তবে সময়টি 30 সেকেন্ডে বেড়ে যায়:

$ time python -c 'import socket; socket.getfqdn()'
python -c 'import socket; socket.getfqdn()'  0.01s user 0.01s system 0% cpu 30.114 total

(কৌতূহলভাবে সি প্রোগ্রাম hostinfoএখনও মাত্র 5 সেকেন্ডের উপরে নেয়)

কী কারণে এই সমস্যা সৃষ্টি হচ্ছে? আমার হোস্টনামটি কী অবৈধ বা সমস্যা সৃষ্টি করছে?

$ hostname
MacBook-Pro.local

এই সমস্যাটি একই নেটওয়ার্কে কোনও ম্যাকবুক এয়ারে ঘটে না।

আমি যে বড় পার্থক্যটি দেখতে পাচ্ছি তা হ'ল সমস্যাযুক্ত মেশিনে, নিম্নলিখিত ডিএনএস সংযোগটি তালিকাভুক্ত করা হয়:

$ scutil --dns
DNS configuration

resolver #1
  search domain[0] : Home
  nameserver[0] : 8.8.8.8
  nameserver[1] : 8.8.4.4
  flags    : Request A records
  reach    : Reachable

DNS configuration (for scoped queries)

resolver #1
  search domain[0] : Home
  nameserver[0] : 8.8.8.8
  nameserver[1] : 8.8.4.4
  if_index : 4 (en0)
  flags    : Scoped, Request A records
  reach    : Reachable

ম্যাকবুক এয়ারে, বেশ কয়েকটি অতিরিক্ত এন্ট্রি এমডিএনএস সম্পর্কিত অন্তর্ভুক্ত রয়েছে। উদাহরণ স্বরূপ:

resolver #2
  domain   : local
  options  : mdns
  timeout  : 5
  flags    : Request A records
  order    : 300000

এটি উল্লেখযোগ্য বলে মনে হচ্ছে। মজার বিষয় হল, উপরে উল্লিখিত সময়সীমাটি উপরের রানটাইমগুলির সমান।

আমার নোট করা উচিত যে আমি ওয়াইফাই ব্যবহার করে ইন্টারনেটে সংযুক্ত এবং আমার কম্পিউটারের হোস্টের নামটি সমাধান করার চেষ্টা করার সময়ই সমস্যাটি বিদ্যমান।


বোর্ডে n ° 67590 এ স্বাগতম। আপনার এমবিপি কীভাবে ইন্টারনেটের সাথে সংযুক্ত থাকে তা আপনার প্রশ্নে যুক্ত করুন (ইথারনেট, ওয়াই-ফাই, ব্লুটুথ…)। আপনি একটি বেসিক চেষ্টা করে ping my_ISP_DNS_server& ping Google_DNS_server?
ডান

উত্তর:


13

আমি স্পষ্টভাবে হিসাবে একই মান হিসাবে HostNameব্যবহার সেট করে এই সমস্যাটি সমাধান করতে সক্ষম হয়েছিল :scutilLocalHostName

$ scutil --set HostName $(scutil --get LocalHostName)

এখন:

$ sudo scutil --set HostName MacBook-Pro
$ time python -c 'import socket; print(socket.getfqdn())'
MacBook-Pro
python -c 'import socket; print(socket.getfqdn())'  0.01s user 0.00s system 86% cpu 0.016 total

নিম্নলিখিত কারণে আমি আগে বিভ্রান্ত ছিল:

$ scutil --get LocalHostName
MacBook-Pro

$ hostname
MacBook-Pro.local

কিন্তু:

$ scutil --get HostName
HostName: not set

অন্য উত্তরে বর্ণিত হিসাবে এটি এটি ঠিক করতে হবে এটি কেবল ঠিক করতে হবে বলে মনে হচ্ছে তবে এটিতে অবশ্যই এটি অবশ্যই .localথাকবে (বা সম্ভবত কেবলমাত্র একটি .সাধারণভাবে)।
কীথ স্মাইলি

4

আমার মূলত একই সমস্যা ছিল, তবে শেষ পর্যন্ত এটি সমাধান হয়েছে।

আমি আছে ব্যবহৃত:

$ scutil --get HostName
Michaels-Macbook-Pro
$ scutil --get LocalHostName
Michaels-Macbook-Pro
$ time python -c 'import socket; socket.getfqdn()'
... 30s ...

তারপরে আমি পরিবর্তন করেছি:

$ scutil --set HostName Michaels-Macbook-Pro.local
$ time python -c 'import socket; socket.getfqdn()'
... 5s ...

তারপরে আমি এতে যুক্ত করেছি: /etc/hosts

127.0.0.1       localhost Michaels-Macbook-Pro.local
::1             localhost Michaels-Macbook-Pro.local

এটি দ্রুত হয়ে ওঠে।


2

একই সমস্যা ছিল, কিন্তু আপনার পরামর্শগুলি আমার পক্ষে কার্যকর হয়নি।

অবশেষে, আমি এটি করার পরে এটি স্থির করেছিলাম:

sudo scutil --set HostName uranus.local

আমার মেশিন হোস্টটি 'ইউরেনাস'। আমাকে এটিতে কেবল '.local' যুক্ত করতে হয়েছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.