অ্যাপাচি ২.২ সার্ভারের প্রতিক্রিয়ার আগে দীর্ঘ প্রতীক্ষার সময় (জেন্টু এলএএমপি)


9

আমি সম্প্রতি একটি ক্লায়েন্টের ওয়েবসাইটটি (কংক্রিট 5 সিএমএস ব্যবহার করে) জেন্টু, অ্যাপাচি ২.২, পিএইচপি 5 এবং মাইএসকিউএল 5 তে চালিত ভিপিএসে স্থানান্তরিত করেছি এবং আমি লক্ষ্য করেছি যে অ্যাপাচি প্রতিক্রিয়া সময়গুলি বেশ খারাপ (পুরানো সার্ভারে এটি একই ছিল) , মাঝে মাঝে 8-9 সেকেন্ড পর্যন্ত যেতে পারে তবে প্রায়শই 300ms এবং 3 সেকেন্ডের মধ্যে থাকে (300 মিমিটির দিকে আমি আপত্তি করি না)। আমি জানি এটি কোনও নেটওয়ার্ক ল্যাটেন্সি নয়, যেহেতু সার্ভারটির প্রায় 30 মাইলের পিং রয়েছে (আমার অবস্থান থেকে)।

এই সময়ের উদাহরণ এখানে (আপনি দেখতে পারেন এটি প্রাথমিক অপেক্ষার পরে চটজলদি):

ফায়ারব্যাগ নেট প্যানেল টাইমলাইন

আমি এপিসি চালাচ্ছি (যদিও আমি নিশ্চিত না যে এটি সঠিকভাবে কাজ করছে ...) এবং সুেক্সেক্স। অ্যাপাচি মডিউলগুলি হ'ল:

 core_module (static)
 authn_file_module (static)
 authn_default_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 authz_user_module (static)
 authz_default_module (static)
 auth_basic_module (static)
 include_module (static)
 filter_module (static)
 deflate_module (static)
 log_config_module (static)
 env_module (static)
 expires_module (static)
 headers_module (static)
 setenvif_module (static)
 version_module (static)
 ssl_module (static)
 mpm_prefork_module (static)
 http_module (static)
 mime_module (static)
 status_module (static)
 autoindex_module (static)
 asis_module (static)
 info_module (static)
 suexec_module (static)
 cgi_module (static)
 negotiation_module (static)
 dir_module (static)
 actions_module (static)
 userdir_module (static)
 alias_module (static)
 rewrite_module (static)
 so_module (static)
 suphp_module (shared)

এবং পিএইচপি মডিউলগুলি হ'ল:

bcmath
calendar
ctype
curl
db
dbase
domxml
exif
ftp
gd
gettext
iconv
imap
mbstring
mcrypt
mime_magic
mysql
openssl
overload
pcre
posix
session
standard
sysvsem
sysvshm
tokenizer
xml
xslt
zlib

আমি সমস্ত প্রাসঙ্গিক ফাইলগুলিতে gzip সক্ষম পেয়েছি।

অ্যাপাচি প্রফোরক ব্যবহার করে চলছে এবং httpd.conf- এ সেটিংস হ'ল:

<IfModule prefork.c>
StartServers         10
MinSpareServers      10
MaxSpareServers      20
MaxClients           250
MaxRequestsPerChild  4000
</IfModule>

HostnameLookups Off

আমি লক্ষ্য করেছি যে যে পৃষ্ঠাগুলি (আমার মনে হয়) ডাটাবেস-ভারী যেমন সিএমএসের ড্যাশবোর্ড, সাধারণত ধীর হয়। আমি ভেবেছিলাম এর অর্থ মাইএসকিউএল অনুকূলিত করা যেতে পারে। আমি আপাচি মডিউলগুলি সম্পর্কেও আশ্চর্য হয়েছি - আমি মোড_এফপি 5, মোড_সিজি, মোড_ফেস্কি ইত্যাদি ইত্যাদির মধ্যে বিভ্রান্ত হয়ে পড়ি - ব্যবহারের সেরাটি সম্পর্কে পুরো নেট জুড়ে রয়েছে বিবাদমান পরামর্শ।

এখানে মাইএসকিউএলটিউনারের আউটপুট :

-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.0.44-log
[OK] Operating on 64-bit architecture

-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated -InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 35M (Tables: 161)
[!!] Total fragmented tables: 15

-------- Security Recommendations  -------------------------------------------
[OK] All database users have passwords assigned

-------- Performance Metrics -------------------------------------------------
[--] Up for: 3d 21h 44m 16s (293K q [0.868 qps], 1K conn, TX: 135M, RX: 90M)
[--] Reads / Writes: 99% / 1%
[--] Total buffers: 58.0M global + 1.6M per thread (100 max threads)
[!!] Maximum possible memory usage: 219.7M (93% of installed RAM)
[OK] Slow queries: 0% (0/293K)
[OK] Highest usage of available connections: 2% (2/100)
[OK] Key buffer size / total MyISAM indexes: 16.0M/20.9M
[OK] Key buffer hit rate: 99.6% (5M cached / 21K reads)
[!!] Query cache is disabled
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 3K sorts)
[!!] Temporary tables created on disk: 47% (2K on disk / 5K total)
[!!] Thread cache is disabled
[!!] Table cache hit rate: 6% (64 open / 1K opened)
[OK] Open file limit used: 12% (128/1K)
[OK] Table locks acquired immediately: 100% (356K immediate / 356K locks)

-------- Recommendations -----------------------------------------------------
General recommendations:
    Run OPTIMIZE TABLE to defragment tables for better performance
    Reduce your overall MySQL memory footprint for system stability
    Enable the slow query log to troubleshoot bad queries
    When making adjustments, make tmp_table_size/max_heap_table_size equal
    Reduce your SELECT DISTINCT queries without LIMIT clauses
    Set thread_cache_size to 4 as a starting value
    Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
  *** MySQL's maximum memory usage is dangerously high ***
  *** Add RAM before increasing MySQL buffer variables ***
    query_cache_size (>= 8M)
    tmp_table_size (> 32M)
    max_heap_table_size (> 16M)
    thread_cache_size (start at 4)
    table_cache (> 64)

আমি লক্ষ্য করেছি যে যখন কোনও ডিবি-ভারী পৃষ্ঠা লোড করা হয়েছিল, তখন সিপিইউ ব্যবহারের পরিমাণ বেড়েছিল 57% (শীর্ষ ব্যবহার করে) - যা আমার কাছে বোঝায় যে এই সেটআপটি দ্রুততর করার জন্য কিছু খারাপভাবে-অপ্টিমাইজড মাইএসকিউএল স্টাফ রয়েছে বা ক্যাশিং একেবারে প্রয়োজনীয়।

কোন সাহায্যের অনেক প্রশংসা হবে!


2
শুধু একটি চিন্তা: HostnameLookupলগ কনফিগারেশন সক্ষম? যদি তা হয় তবে অ্যাক্সেস লগটিতে অনুরোধ করা ক্লায়েন্টের ডিএনএস লুক্কুলি খুব ধীর হতে পারে (বা প্রথম ডিএনএস সার্ভার এমনকি কয়েকবার আউট) যা সম্পূর্ণ অনুরোধটিকে ধীর করতে পারে।
jCoder

এটি অক্ষম - আমি এটিকে মূল পোস্টে যুক্ত করব
melat0nin

যদি এটি কেবল পিএইচপি জড়িত অনুরোধ হয়। এপিসিতে টুকরো টুকরো করার জন্য পরীক্ষা করুন। আপনারও উত্স ব্যবহার ঘনিষ্ঠভাবে পর্যবেক্ষণ করা উচিত; সার্ভারটি তার সমস্ত সংস্থান ব্যবহার করছে, বা এটি অলস?
Kvisle

ইতিমধ্যে am (ওপি দেখুন) :)
melat0nin

সে সম্পর্কে দুঃখিত :) - আমার মন্তব্য আপডেট করেছে; আপনি কি যাচাই করেছেন যদি এটি কেবলমাত্র পিএইচপি অনুরোধ বা অন্যান্য অনুরোধগুলিও থাকে? সার্ভারটি নিষ্ক্রিয় বা ব্যস্ত? এপিসি কি খণ্ডিত? অন্যান্য বিষয়গুলি 'ক্যাশেড' মেমরির কত?
Kvisle

উত্তর:


14

আপনি কি জানেন যে অ্যাপাচি কর্মীদের প্রক্রিয়াগুলি কীভাবে ঝুলিয়ে যাচ্ছে? এটি দেখতে চেষ্টা করুন:

mkdir /strace; ps auxw | grep httpd | awk '{print"-p " $2}' | xargs strace -o /strace/strace.log -ff -s4096 -r

আপনার ব্রাউজারে কয়েকটি নতুন (অর্থাত্ স্থানীয়ভাবে ক্যাশেড নয়) পৃষ্ঠাগুলি লোড করুন, স্ট্রেস বন্ধ করতে CTRL + C তারপরে প্রতিটি কলের জন্য সময় ব্যয় করে স্ট্রেস.লগগুলি বাছাই করুন:

for i in `ls /strace/*`; do echo $i; cat $i | cut -c11-17 | sort -rn | head; done

1.0 সেকেন্ডের বেশি কল সহ যে কোনও স্ট্রেস.লগগুলি দেখুন এবং আগের কমান্ডের আউটপুট থেকে সময় অনুসারে অনুসন্ধান করুন। এটি আপনাকে যে সঠিক পদক্ষেপে ঝুলিয়ে দিচ্ছে তাতে নির্দেশ করবে।

আপনি কি পরিবর্তনের মাধ্যমে সিএসএফের মতো ফায়ারওয়াল ইনস্টল করেছেন? আমি একটি ভিপিএসে এই একই সমস্যাটি দেখেছি। যখন স্ট্রেসের সাথে httpd প্রক্রিয়াগুলি ডিবাগ করা হয় তখন গেটটাইমডে কলগুলিতে 5 সেকেন্ড বা তার বেশি সময় লেগেছিল। আশ্চর্যের সাথে আমি এটিকে সিএসএফের কাছে সংকুচিত করেছিলাম, যা ওপেনভিজেড বা ভার্চুওজো কনটেইনারগুলির একটি লুপব্যাক ইন্টারফেস, ভিনিট0 ইন্টারফেসটি ফিল্টার করার চেষ্টা করছিল। /Etc/csf/csf.conf এ এই প্যারামিটারটি সেট করা আমার পক্ষে বেশিরভাগ ক্ষেত্রে এটি স্থির করে:

"ETH_DEVICE_SKIP = "venet0,lo"

আমি বেশিরভাগ ক্ষেত্রে বলেই যে কখনও কখনও সংযোগ স্থাপনের জন্য এখনও 500-1000ms অপেক্ষা করে তবে এটি 5000+ থেকে একটি বড় উন্নতি।


1
আপনার উত্তরের জন্য ধন্যবাদ! শেষ পর্যন্ত জিনিসগুলি সাজানো হয়েছে বলে মনে হয়েছিল যখন আমি এপিসিটি সঠিকভাবে কাজ করেছি - সাইটটি এখন খুব সুন্দর। যদিও সেরা নির্দেশাবলীর জন্য +1, এবং আমি আবার এইরকম কিছু এলে আমি সেগুলি নোট করব।
melat0nin

3

স্ট্রেস ব্যবহার করে এই ধরণের সমস্যাগুলির সমাধানের জন্য একটি দুর্দান্ত প্রাইমার / ওয়াকথথ্রো

Maximum possible memory usage: 219.7M (93% of installed RAM)

এটি অবশ্যই একটি নিম্ন-শেষের ভিপিএস বাক্স হবে?

  • আপনি আপনার মাইএসকিউএল সেটিংস ডায়াল করতে চাইতে পারেন
  • টিপুন টিপুন কাঁটাচামড়ার সংখ্যা কমাতে
  • আপনি অদলবদল সক্ষম করতে পারেন কিনা তা পরীক্ষা করে দেখুন
  • এপিসি স্বয়ংক্রিয়ভাবে অপকডগুলি ক্যাশে সেট করা আছে? 'Apc.php' স্ক্রিপ্টটি এপিসি দিয়ে বিতরণ করে পরীক্ষা করুন।

3

বিলম্বের উত্স হিসাবে আপনাকে নেটওয়ার্ক, অ্যাপাচি, মাইএসকিএল এবং পিএইচপি আলাদা করতে হবে।

আপনি যদি অ্যাপাচি থেকে কোনও চিত্র দ্রুত টানতে পারেন (খুব কম সময় প্রথম বাইটে), তবে নেটওয়ার্ক এবং অ্যাপাচি সাধারণত ভাল থাকে।

আপনি যদি কেবল একটি phpinfo () বিবৃতি দিয়ে কোনও পৃষ্ঠা টানতে পারেন তবে সাধারন পিএইচপি ঠিক আছে (কয়েকটি টুইটের প্রয়োজন হতে পারে)।

আপনি যদি একটি সাধারণ ডিবি সংযোগ পরীক্ষা লিখেন এবং এটি দ্রুত হয়, তবে সেই স্তরটি সাধারণত ঠিক থাকে।

শেষ পর্যন্ত, অ্যাপ্লিকেশন পৃষ্ঠাটি টানুন। যদি এটি ধীর হয় তবে সমস্যাটি অ্যাপ্লিকেশন প্রসেসিংয়ের অভ্যন্তরীণ। টিউনিং সাহায্য করতে পারে, এটি সমাধান করা আরও অনেক কঠিন।

অ্যাপ্লিকেশনটি প্রোফাইল না করেই সমস্যাটি খুঁজে পাওয়া কঠিন হতে পারে। নিউরেলিকের মতো সরঞ্জামগুলি এই সমস্যাটিতে সহায়তা করতে পারে তবে এটি নিরাময় নয়।

আপনার অ্যাপ্লিকেশনটিতে কোথায় সময় ব্যয় হচ্ছে তা দেখানোর জন্য কি কোনও ধরণের অভ্যন্তরীণ ডিবাগিং রয়েছে?


0

আমি একটি রেন্ডারিং সময় পরিমাপ যোগ করার এবং খাঁটি এইচটিএমএল পৃষ্ঠাটি রেন্ডার করতে সার্ভারকে কতক্ষণ সময় নেয় তা পরীক্ষা করার পরামর্শ দিই। তারপরে আপনি জানেন যে এটি সিএমএসে বা অন্য কোথাও রয়েছে। আমি আমার 2 শতাংশ বাজি ধরছি এটি আপনার সার্ভার কনফিগার নয়। / maddin


আপনি কি রেন্ডারিং সময় পরিমাপ করার জন্য কোনও পদ্ধতির পরামর্শ দিতে পারেন? স্ট্যাটিক এইচটিএমএল পৃষ্ঠায় ফায়ারব্যাগের নেট প্যানেল কি যথেষ্ট?
melat0nin
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.