سؤال

أنا اختبار باستخدام أعطها إلى ذاكرة التخزين المؤقت جانغو وجهات النظر.كيف يمكنني معرفة ما إذا كان أعطها هو في الواقع التخزين المؤقت أي شيء من لينكس سطر الأوامر ؟

هل كانت مفيدة؟

المحلول 4

وكانت

طريقة بسيطة لاختبار عمل memcache التسلل في طابع زمني علق بها على كل صفحة خدم. إذا كان الطابع الزمني بقي نفسه على طلبات متعددة لصفحة، ثم الصفحة كان يجري مؤقتا بواسطة memcache.

في إعدادات جانغو، وأود أيضا إعداد آلية مخبأ لاستخدام ذاكرة التخزين المؤقت الملفات على نظام الملفات (بطيء جدا)، ولكن بعد أن سجل أعلى صفحات كنت أرى أن هناك ملفات ذاكرة التخزين المؤقت الفعلية التي يجري وضعها في مسار الملف بحيث لم أستطع تأكيد التخزين المؤقت كان نشطا في جانغو.

واعتدت على حد سواء هذه الخطوات للعمل خارج بلدي مشكلة التخزين المؤقت. أنا في الواقع لم يكن لديك التخزين المؤقت قيد التشغيل بشكل صحيح في جانغو. وأحدث طريقة لتنشيط التخزين المؤقت يستخدم "django.middleware.cache.CacheMiddleware" الوسيطة (وليس الوسيطة مع قطعتين الوسيطة التي يجب أن تكون أول مشاركة إعدادات / الوسيطة).

نصائح أخرى

أعرف أن هذا السؤال هو قديم ولكن هنا هو آخر نهجا مفيدا لاختبار أعطها مع جانغو:

كما @يعقوب المذكورة ، يمكنك البدء أعطها في الوضع المطول (ليس الشيطان):

memcached -vv

اختبار الخاص بك جانغو ذاكرة التخزين المؤقت التكوين ، يمكنك استخدام مستوى منخفض ذاكرة التخزين المؤقت api.

  1. أولا بدء مترجم بايثون و تحميل django إعدادات المشروع:

    python manage.py shell
    
  2. من قذيفة ، يمكنك استخدام مستوى منخفض ذاكرة التخزين المؤقت api لاختبار memcache server:

    from django.core.cache import cache
    cache.set('test', 'test value')
    

إذا كان لديك ذاكرة التخزين المؤقت التكوين هو الصحيح, يجب أن ترى الإخراج في memcache مشابهة لهذه:

<32 set :1:test 0 300 10
>32 STORED

هل يمكن استخدام telnet واحصائيات قيادة منها مثلا:

# telnet localhost [memcacheport]
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 2239
STAT uptime 10228704
STAT time 1236714928
STAT version 1.2.3
STAT pointer_size 32
STAT rusage_user 2781.185813
STAT rusage_system 2187.764726
STAT curr_items 598669
STAT total_items 31363235
STAT bytes 37540884
STAT curr_connections 131
STAT total_connections 8666
STAT connection_structures 267
STAT cmd_get 27
STAT cmd_set 30694598
STAT get_hits 16
STAT get_misses 11
STAT evictions 0
STAT bytes_read 2346004016
STAT bytes_written 388732988
STAT limit_maxbytes 268435456
STAT threads 4
END

وابدأ memcache ليس بوصفه الخفي ولكن وضعها الطبيعي، لذلك فقط تشغيل memcached -vv للمطول جدا. سترى عندما تحصل ومجموعات تأتي في لخادم memcache.

وأعطها يمكن أن يكتب في الواقع إلى ملف السجل من تلقاء نفسها، دون الحاجة إلى اللجوء إلى إعادة تشغيله يدويا. السيناريو /etc/init.d/memcached الحرف الأول (/usr/lib/systemd/system/memcached.service على EL7 +، لاف) يمكن استدعاء أعطها مع الخيارات المحددة في /etc/memcached.conf (أو /etc/sysconfig/memcached على EL5 +). ومن بين هذه الخيارات والإسهاب وتسجيل مسار الملف.

وباختصار، تحتاج فقط إلى إضافة (أو غير تعليق) هذين الخطين إلى ذلك الملف أسيوط / sysconfig ...

-vv
logfile /path/to/log

... ثم أعد تشغيل البرنامج الخفي مع service memcached restart (EL3-7) أو /etc/init.d/memcached restart (debuntus)

وبعد ذلك يمكنك مراقبة هذا السجل في الطريقة التقليدية، مثل tail -f /path/to/log، على سبيل المثال.

لتمديد استجابة عقدة، يمكنك استخدام socat UNIX-CONNECT:/var/run/memcached.sock STDIN لتصحيح مأخذ يونيكس.

مثال:

$ socat UNIX-CONNECT:/var/run/memcached.sock STDIN
stats
STAT pid 931
STAT uptime 10
STAT time 1378574384
STAT version 1.4.13
STAT libevent 2.0.19-stable
STAT pointer_size 32
STAT rusage_user 0.000000
STAT rusage_system 0.015625
STAT curr_connections 1
STAT total_connections 2
STAT connection_structures 2

ويمكنك اختبار أعطها أو أي خادم من قبل البرنامج النصي أدناه

lsof -i :11211 | grep 'LISTEN'>/dev/null 2>/dev/null;echo $?

واذا عاد 0 ثم الملقم يعمل فعلا أو إذا 1 وليس لذلك إذا كنت تريد أن تعرف أن الملقم يعمل في الواقع على بعض ميناء استخدام البرنامج النصي التالي

lsof -i :11211 | grep 'LISTEN'>/dev/null 2>/dev/null;
if [ $? -eq 0]; then
    echo "Your memcache server is running"
else
    echo "No its not running"
fi

في باش، يمكنك التحقق من إحصاءات memcache من هذا الأمر:

exec 3<>/dev/tcp/localhost/11211; printf "stats\nquit\n" >&3; cat <&3

لمسح ذاكرة التخزين المؤقت، استخدم الأمر memflush:

echo flush_all >/dev/tcp/localhost/11211

وومعرفة ما اذا زادت الإحصائيات.

لتفريغ كافة الكائنات المخزنة مؤقتا، واستخدام memdump أو الأمر memcdump (جزء من حزمة memcached / libmemcached):

memcdump --servers=localhost:11211

وأو:

memdump --servers=localhost:11211

إذا كنت تستخدم PHP، لمعرفة ما إذا كانت مدعومة، والتحقق من قبل: php -i | grep memcached


بحث عن المفقودين

لتحقق ما هي عملية أعطها بالضبط المعالجة، يمكنك استخدام المتشممون الشبكة أو مصححات (مثل strace على لينكس أو dtrace / dtruss على يونيكس / OS X) لذلك. التحقق من بعض الأمثلة أدناه.

Strace

sudo strace -e read,write -fp $(pgrep memcached)

لتهيئة الإخراج في طريقة أفضل، تحقق: كيفية تحليل strace في قذيفة إلى نص عادي

Dtruss

وDtruss هو مجمع dtrace الذي يتوفر على أنظمة يونكس. تشغيله على النحو التالي:

sudo dtruss -t read -fp $(pgrep memcached)

TCPDUMP

sudo tcpdump -i lo0 -s1500 -w- -ln port 11211 | strings -10

ويمكن استخدام حليقة لجلب صفحة بضع مئات المرات والوقت النتائج؟ هل يمكن أن ننظر أيضا في تشغيل عملية على الملقم الذي يحاكي تحميل CPU الثقيلة / القرص أثناء القيام بذلك.

وكتبت في expect النصي is-memcached-running ان الاختبارات إذا أعطها يعمل على الجمع بين المضيف / المنفذ (تشغيل كما is-memcached-running localhost 11211):

#! /usr/bin/env expect
set timeout 1
set ip [lindex $argv 0]
set port [lindex $argv 1]
spawn telnet $ip $port
expect "Escape character is '^]'."
send stats\r
expect "END"
send quit\r
expect eof

إذا قمت بتشغيل النظام من قاعدة Makefile، هل يمكن أن تجعل بدء التشغيل الخاص يعتمد على هدف جعل هذا يؤكد أنه من وتشغيلها (أو يساعدك على الحصول على تلك الدولة). ومن مطول عندما فشل الاختيار لتجعل من السهل بالنسبة لنا لتصحيح أشواط كاريتاس الدولية فشلت، يثبت أعطها عندما كانت مفقودة، وغير وجيزة وإلى هذه النقطة على خلاف ذلك:

#! /bin/bash
if [[ "$(type -P memcached)" ]]; then
  echo 'memcached installed; checking if it is running'
  memcached_debug=`mktemp memcache-check.XXXXX`
  if is-memcached-running localhost 11211 >$memcached_debug 2>&1; then
    echo 'Yep; memcached online'
  else
    cat $memcached_debug
    echo
    echo '****** Error: memcached is not running! ******'
    if [[ "$OSTYPE" =~ ^darwin ]]; then
      echo
      echo 'Instructions to auto-spawn on login (or just start now) are shown'
      echo 'at the end of a "brew install memcached" run (try now, if you did'
      echo 'not do so already) or, if you did, after a "brew info memcached".'
      echo
    fi
    exit 1
  fi
  rm -f $memcached_debug
else
  echo memcached was not found on your system.

  if [[ "$OSTYPE" =~ ^darwin ]]; then
    brew install memcached
  elif [[ "$OSTYPE" =~ ^linux ]]; then
    sudo apt-get install memcached
  else
    exit 1
  fi
fi

ومن سطر الأوامر، حاول الأمر أدناه

واحصائيات صدى | نورث كارولاينا 127.0.0.1 11211 *

إذا فإنه لا يرجع أي شيء، memcache ليست قيد التشغيل. وإلا فإنه يجب إرجاع مجموعة من الإحصاءات بما في ذلك الجهوزية (وضرب ويغيب التهم)

وهذه المادة الإشارة هنا، HTTPS: // شبكة الاتصالات العالمية. percona.com/blog/2008/11/26/a-quick-way-to-get-memcached-status/

وأنا باستخدام الميزانين والجواب الوحيد الذي عملت بالنسبة لي كان جاكوبس الجواب. حتى وقف الخفي وتشغيل memcached -vv

وبعد آخر Aryashree، وهذا ساعدني على الحصول على خطأ إذا أعطها لا تعمل محليا:

import subprocess

port=11211
res=subprocess.Popen('echo stats | nc 127.0.0.1 %d' % (port), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE )
if res.stdout:
    lines=res.stdout.read() 
    lineArr=lines.split('\r\n')
    pidlineArr=lineArr[0].split(' ')
    pid=pidlineArr[len(pidlineArr)-1]
    print("[MemCached] pid %s Running on port %d" % (pid, port))

else:
    raise RuntimeError("No Memcached is present on port %d" % port)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top