প্রশ্ন Postgresql প্রক্রিয়া হত্যা থেকে লিনাক্স কার্নেল অক্ষম করুন


আমি স্ট্যান্ডার্ড অফ আউট অফ বক্স 'ইনস্টলেশনের আছে

Linux version 3.0.1.stk64 (dfn@localhost.localdomain) (gcc version 4.5.1 20100924 (Red Hat 4.5.1-4) (GCC) ) #1 SMP Sat Aug 13 12:53:46 EDT 2011

এটি postgresql 8.4 হিসাবে ইনস্টল (স্ক্রিপ্ট শুরু)

/etc/init.d/postgresql

তথ্য ডিরেক্টরি

/etc/postgresql/8.4/main/

আমার সমস্যা হল মাঝে মাঝে কম মেমরির সময়ে কার্নেল কিছু পোস্টগ্র্যাস্কল প্রক্রিয়াগুলি হত্যা করার সিদ্ধান্ত নেয়। আমি কার্নেলকে অবহিত করতে চাই যে পোস্টগ্রেস্কলকে হত্যা করার জন্য নির্বাচন করা উচিত নয়। আমি postgresql ডকুমেন্টেশন থেকে পড়া (http://www.postgresql.org/docs/9.1/static/kernel-resources.html) যে একটি কমান্ড লাইন echo -17 > /proc/self/oom_adj হত্যা এড়ানোর জন্য ব্যবহার করা যেতে পারে।

আমি এই কমান্ড লাইন যোগ করার চেষ্টা /etc/init.d/postgresql স্ক্রিপ্ট কিন্তু সেখানে সেখানে রাখা যেখানে সত্যিই জানি না।

কোন পয়েন্টার এটি সম্পর্কে যেতে কিভাবে? বিজ্ঞান (/etc/init.d/postgresql) উপায় হল:

#!/bin/sh
set -e

### BEGIN INIT INFO
# Provides:             postgresql
# Required-Start:       $local_fs $remote_fs $network $time
# Required-Stop:        $local_fs $remote_fs $network $time
# Should-Start:         $syslog
# Should-Stop:          $syslog
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description:    PostgreSQL RDBMS server
### END INIT INFO

# Setting environment variables for the postmaster here does not work; please
# set them in /etc/postgresql/<version>/<cluster>/environment instead.

[ -r /usr/share/postgresql-common/init.d-functions ] || exit 0

. /usr/share/postgresql-common/init.d-functions

# versions can be specified explicitly
if [ -n "$2" ]; then
    versions="$2 $3 $4 $5 $6 $7 $8 $9"
else
    get_versions
fi

case "$1" in
    start|stop|restart|reload|status)
        for v in $versions; do
            $1 $v
        done
        ;;
    force-reload)
        for v in $versions; do
            reload $v
        done
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|reload|force-reload|status} [version ..]"
        exit 1
        ;;
esac

exit 0

5
2017-10-25 15:59


উত্স




উত্তর:


আপনি পোস্টমাস্টার পিড সরাসরি oom_adj সামঞ্জস্য করা উচিত, এই মত একটি লাইন যোগ করুন (পরীক্ষা না):

pid=`cat $PGDATA/postmaster.pid | head -1`
echo -17 > /proc/$pid/oom_adj

3
2017-10-25 16:16



আমি নিশ্চিত করতে পারি যে / proc / $ postmasterpid / oom_adj ডিফল্ট মানটি শূন্য হয় তবে sshd- র redhat এবং ডেবিয়ানতে -17 আছে। -17 ডিফল্ট এবং একটি বৈশিষ্ট্য অনুরোধ করা উচিত নয়?
-17 পোস্টগ্রেসের ডিফল্ট -9.0 (এবং 9.1), আমি মনে করি সংস্করণ 8 ওম-কিলার প্যারামিটারগুলি সামঞ্জস্য করতে খুব পুরানো ইনিট স্ক্রিপ্ট ব্যবহার করছে। - Andrei Mikhaltsov
BTW oom_adj অপ্রচলিত, kernel.org/doc/Documentation/ABI/obsolete/proc-pid-oom_adj - Andrei Mikhaltsov
হ্যাঁ oom_score_adj পরিবর্তে ব্যবহার করা উচিত, তবে আপনাকে একটি সাম্প্রতিক কার্নেলের প্রয়োজন (rhel5 এ উপভোগ করবেন না)।
দ্রষ্টব্য: আমি একটি লিনাক্স গুরু নই, তাই আমি এখানে পরামর্শের একটিও শব্দ বুঝতে পারিনি। এটি 8.4 আইপ্যাফের সাথে কাজ করার জন্য আমি কী করতে পারি এবং বিশেষত এটি স্টার্টআপ স্ক্রিপ্টের অংশ এবং এটির মতো কাজ করে। স্বয়ংক্রিয় প্রারম্ভে কমন? - Martin