2015-10-23 9 views
5

मैं एक एकल नोड कैसंद्रा का उपयोग कर रहा हूं और प्रतिक्रिया समय की जांच करने के लिए मैं कुछ प्रश्नों को चलाने का इरादा रखता हूं। कुछ प्रश्नों के अलावा, निष्पादन के 10s के बाद मुझे निम्न त्रुटि होती है:ऑपरेशनटाइम आउट: त्रुटियों = {}, last_host = 127.0.0.1

OperationTimedOut: errors = {}, last_host = 127.0.0.1 

तो मैं निम्न आदेश भागा:

sudo gedit /usr/bin/cqlsh.py 

और cqlsh.py फ़ाइल बदल:

# cqlsh should run correctly when run out of a Cassandra source tree, 
# out of an unpacked Cassandra tarball, and after a proper package install. 
cqlshlibdir = os.path.join(CASSANDRA_PATH, 'pylib') 
if os.path.isdir(cqlshlibdir): 
    sys.path.insert(0, cqlshlibdir) 

from cqlshlib import cql3handling, cqlhandling, pylexotron, sslhandling 
from cqlshlib.displaying import (ANSI_RESET, BLUE, COLUMN_NAME_COLORS, CYAN, 
           RED, FormattedValue, colorme) 

from cqlshlib.formatting import (DEFAULT_DATE_FORMAT, DEFAULT_NANOTIME_FORMAT, 
           DEFAULT_TIMESTAMP_FORMAT, DateTimeFormat, 
           format_by_type, format_value_utype, 
           formatter_for) 

from cqlshlib.tracing import print_trace, print_trace_session 
from cqlshlib.util import get_file_encoding_bomsize, trim_if_present 

DEFAULT_HOST = '127.0.0.1' 
DEFAULT_PORT = 9042 
DEFAULT_CQLVER = '3.3.1' 
DEFAULT_PROTOCOL_VERSION = 4 
DEFAULT_CONNECT_TIMEOUT_SECONDS = 240 

DEFAULT_FLOAT_PRECISION = 5 
DEFAULT_MAX_TRACE_WAIT = 300 

हालांकि, जब मैं क्वेरी को दोबारा चलाने की कोशिश करता हूं, तो सीक्यूएल 10s के बाद एक ही त्रुटि लौटाता है:

OperationTimedOut: errors = {}, last_host = 127.0.0.1 

मुझे क्या करना है ताकि क्वेरी का कोई जवाब समय न हो?

उत्तर

5

क्या आप इन प्रश्नों को cqlsh में निष्पादित कर रहे हैं?

यदि ऐसा है, तो आप क्लाइंट अनुरोध टाइमआउट को मार रहे हैं (कनेक्ट टाइमआउट नहीं, न ही सर्वर-साइड रीड अनुरोध टाइमआउट)।

आप ~/.cassandra/cqlshrc में एक की स्थापना करके डिफ़ॉल्ट टाइमआउट बदल सकते हैं:

[connection] 
client_timeout = 20 
# Can also be set to None to disable: 
# client_timeout = None 

और अधिक विस्तार के लिए https://issues.apache.org/jira/browse/CASSANDRA-7516 देखें।

मैं एक और टिप्पणी से देखता हूं जिसे आप पहले ही पेजिंग के बारे में जानते हैं। यह सबसे अच्छा तरीका होगा क्योंकि डेटा और ऐप स्तरों पर स्मृति में पूरे परिणाम सेट करने के लिए आपको इसकी आवश्यकता नहीं होती है।

+0

जो निर्देशिका है कि मुझे ~/.cassandra/cqlshrc में डिफ़ॉल्ट टाइमआउट बदलना चाहिए? मुझे नहीं मिल रहा है ... –

+1

मैं "पेजिंग" का उपयोग करने का इरादा नहीं रखता क्योंकि मैं आरडीबीएमएस और कैसंद्रा के बीच एक क्वेरी प्रदर्शन तुलना कर रहा हूं। मैं क्वेरी का पूर्ण परिणाम प्राप्त करने का इरादा रखता हूं और प्रतिक्रिया समय की जांच करता हूं ... "पेजिंग" विकल्प के साथ मुझे लगता है कि यह संभव नहीं है ... –

+1

आप इसे निर्दिष्ट पथ (~/.cassandra/cqlshrc) पर डाल सकते हैं, या cqlsh कमांड लाइन पर वैकल्पिक पथ निर्दिष्ट कर सकते हैं: https://github.com/apache/cassandra/blob/cassandra-2.2.3/ बिन/cqlsh.py # L174 –

1

आपको cassandra.yaml फ़ाइल में read_request_timeout_in_ms पैरामीटर बदलना होगा। और फिर कैसंद्रा को पुनरारंभ करें।

+0

मैं '5000000' के लिए [read_request_timeout] को बदल दिया है और त्रुटि बनी रहती है। मैं एक नोड के साथ काम कर रहा हूं, फिर मैंने 'cqlsh.py' फ़ाइल को बदलने का विचार किया समस्या को हल करना चाहिए लेकिन नहीं ... –

+0

आपकी क्वेरी क्या है? – DineMartine

+0

cassandra.yaml फ़ाइल जिसे आप संपादित करना है वह नोड में से एक है जो cqlsh क्लाइंट में से एक नहीं है। क्या आपने यह किया है? क्या आपने नोड को पुनरारंभ किया था? – DineMartine

4

आपको विभिन्न समय-समय पर जवाब देने के बारे में बताते हुए कुछ हद तक प्रतिक्रियाएं दिखाई देगी, लेकिन असली जवाब यह है कि आप लगभग उन टाइमआउट को कभी नहीं उठाना चाहते हैं, क्योंकि यदि आपके पास वास्तविक डेटा सेट है, तो आप अपने सर्वर को मार देंगे (या ड्रॉप अनुरोध/उत्परिवर्तन) बहुत लंबे समय से चलने वाले प्रश्नों के साथ। आप बड़े, लंबे समय तक चलने वाले प्रश्नों की तुलना में पेजिंग और अधिक शॉर्ट-रनिंग क्वेरी का उपयोग करके बेहतर हैं।

+1

मुझे बेंचमार्किंग के दौरान इंटरैक्टिव निरीक्षण के लिए टाइमआउट बढ़ाने की आवश्यकता थी। तो "असली जवाब" दर्शक की आंखों में है ... ;-) –

6

कैसंड्रा का नवीनतम संस्करण आपको cqlshrc फ़ाइल को संपादित करने के बजाय, जब आप इसका उपयोग करते हैं तो cqlsh टाइमआउट निर्दिष्ट करने की अनुमति देता है।

cqlsh --request-timeout <your-timeout>

संबंधित मुद्दे