Hi, Hugh. This is the output of running the "status();" command after the databse has been up for ~20 minutes, but without any process using it:
SQL> status(); REPORT VARCHAR _______________________________________________________________________________ OpenLink Virtuoso Server Version 07.20.3212-pthreads for Linux as of Apr 8 2015 Started on: 2015-10-20 12:41 GMT+0 Database Status: File size 0, 53782528 pages, 14282765 free. 5000000 buffers, 524723 used, 2 dirty 0 wired down, repl age 0 0 w. io 0 w/crsr. Disk Usage: 529409 reads avg 0 msec, 0% r 0% w last 1 s, 97613 writes flush 0 MB, 1353 read ahead, batch = 315. Autocompact 0 in 0 out, 0% saved. Gate: 1501 2nd in reads, 0 gate write waits, 0 in while read 0 busy scrap. Log = /var/lib/virtuoso-opensource-7/db/virtuoso.trx, 2062 bytes 1727723 pages have been changed since last backup (in checkpoint state) Current backup timestamp: 0x3EF5-0xD4-0x1A Last backup date: Mon Oct 19 23:17:46 2015 Clients: 2 connects, max 1 concurrent RPC: 16 calls, 0 pending, 1 max until now, 0 queued, 4 burst reads (25%), 0 second 0M large, 12M max Checkpoint Remap 0 pages, 0 mapped back. 33 s atomic time. DB master 53782528 total 14282765 free 0 remap 0 mapped back temp 1280 total 1275 free Lock Status: 0 deadlocks of which 0 2r1w, 0 waits, Currently 1 threads running 0 threads waiting 0 threads in vdb. Pending: Client 1111:2: Account: dba, 653 bytes in, 7041 bytes out, 1 stmts. PID: 7440, OS: unix, Application: unknown, IP#: 127.0.0.1 Transaction status: PENDING, 1 threads. Locks: Running Statements: Time (msec) Text 868 status() Hash indexes Best Regards. Piret Lattikas On 20.10.15 15:59, Hugh Williams wrote: > Hi Piret, > > If you have 10.6 billion trips and only 599GB RAM, then given that Virtuoso 7 > typically requires 10GB RAM per billion triples, I suspect all the memory is > being consumed and there will be a lot of swapping to disk, which is why I > wanted to see the output of running the “status();” command when the database > is “warm” which will show resource usage. The output of the Linux “top” > command would also be useful to see. > > I see you use the “isql-vt” command which implies you are using a Virtuoso > installation supplied with one of the Linux distro’s and as said perviously > is rather old (3212) and thus would recommend updating to a latest 3214 > stable or develop 7 build from git as there have been a number of memory > related and other fixes in these later versions. > > If your database integrity check is failing on this other instance then you > must to a crash-dump and recovery or a crash recovery when the normal crash > dump recovery fails, all of which are detailed at: > > http://docs.openlinksw.com/virtuoso/databaseadmsrv.html#backup > > Best Regards > Hugh Williams > Professional Services > OpenLink Software, Inc. // http://www.openlinksw.com/ > Weblog -- http://www.openlinksw.com/blogs/ > LinkedIn -- http://www.linkedin.com/company/openlink-software/ > Twitter -- http://twitter.com/OpenLink > Google+ -- http://plus.google.com/100570109519069333827/ > Facebook -- http://www.facebook.com/OpenLinkSoftware > Universal Data Access, Integration, and Management Technology Providers > >> On 20 Oct 2015, at 12:44, Piret Lattikas <piret.latti...@zerotech.ee> wrote: >> >> Hi, Hugh. >> >> To answer some of your questions. The total count of triples in our Quad >> Store is around 10.6billion. The server machine has 6 cores and 59GB RAM. >> >> The actual .sql script run is this: >> >> log_enable(2); >> >> SPARQL DELETE { GRAPH ?graph { ?st >> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> ?subject . }} INSERT { >> GRAPH ?graph { ?st <http://purl.org/vocab/changeset/schema#subject> ?subject >> . }} WHERE { GRAPH ?graph { ?st >> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> ?subject . }} LIMIT >> 10000000; >> >> checkpoint; >> >> log_enable(1); >> >> And the script is called out like this: >> >> isql-vt 1111 dba dba update.sql >> >> The script was called out 5 times in a row and then another checkpoint was >> made like this: >> >> isql-vt 1111 dba dba exec="checkpoint;" >> >> No other process was using virtuoso when we were executing this script and >> when the crash happened. >> >> In addition we have a second instance of virtuoso, which often is making >> many concurrent insertions. We noticed that making integrity check in that >> instance fails after some time with the following error: >> ... >> 09:42:19 /usr/bin/virtuoso-t() [0x5db66c] >> 09:42:19 /usr/bin/virtuoso-t(sf_sql_execute_w+0x74) [0x5db884] >> 09:42:19 /usr/bin/virtuoso-t() [0x8d8f38] >> 09:42:19 /usr/bin/virtuoso-t() [0x8df6fc] >> 09:42:19 /lib/x86_64-linux-gnu/libpthread.so.0(+0x8182) [0x7ff65fd23182] >> 09:42:19 /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7ff65f32d47d] >> 09:42:19 GPF: page.c:899 out of order >> >> Is it a problem if we keep using that instance, when the integrity check >> fails with this error? Should we definitely do a crash dump and restore from >> that? The reason I am asking is that this problem occurs almost every week >> and restoring from crash dump takes some time. So processes using that >> virtuoso instance are down during that time. >> >> Best Regards. >> >> Piret Lattikas >> >> >> On 19.10.15 17:41, Hugh Williams wrote: >>> Hi Piret, >>> >>> I note you are using an older Virtuoso 7.2.3212 build from Apr 2015 where >>> as the current stable release build from git or source-forge is 7.2.3214, >>> thus I would suggest updating to this later release or even the current git >>> develop/7 head to get all the latest fixes and see if the problem persists. >>> >>> The “??”’s in gdb back trace output would indicate the Virtuoso binary is >>> stripped of symbols thus to get a meaningful back trace a debug build with >>> symbols intact needs to be compiled as follows: >>> >>> 1. Configure using the —with debug option: >>> >>> ./configure —with-debug >>> >>> 2. In the Makefile, check to ensure CFLAGS has the “-g” option set which >>> generates debug information: >>> >>> CFLAGS = -g -O2 >>> >>> 3. Then do "make clean all deinstall reinstall” to build a new debug >>> unstripped binary (virtuoso-t) >>> >>> 4. Start database with this new binary and force the crash condition again >>> to generate a new core file >>> >>> 5. Use gdb to load core file >>> >>> gdb virtuoso-t core >>> >>> 6. At the prompt, type "bt" or “backtrace” to backtrace through stack and >>> provide the output when top of stack is reached. >>> >>> You indicate having 1.7billion triples to be updated of which about 500 >>> million are still to be updated, but what is the total count of triples in >>> the Quad Store ( select * where {?s ?p ?o} ) ? Also what are the specs of >>> the server machine being used in terms of number of cores and memory in >>> particular and what does the output of the following command run from the >>> “isql” command line tool, report when the database is “warm” : >>> >>> status(); >>> >>> Can you provide the actual content of the SQL script being run ? >>> >>> Best Regards >>> Hugh Williams >>> Professional Services >>> OpenLink Software, Inc. // http://www.openlinksw.com/ >>> Weblog -- http://www.openlinksw.com/blogs/ >>> LinkedIn -- http://www.linkedin.com/company/openlink-software/ >>> Twitter -- http://twitter.com/OpenLink >>> Google+ -- http://plus.google.com/100570109519069333827/ >>> Facebook -- http://www.facebook.com/OpenLinkSoftware >>> Universal Data Access, Integration, and Management Technology Providers >>> >>>> On 19 Oct 2015, at 11:37, Piret Lattikas <piret.latti...@zerotech.ee> >>>> wrote: >>>> >>>> Hi, >>>> >>>> We were running a simple update SPARQL query for a large set of data. The >>>> update query for replacing one predicate with another, itself is this: >>>> >>>> SPARQL DELETE { GRAPH ?graph { ?st >>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> ?subject . }} INSERT >>>> { GRAPH ?graph { ?st <http://purl.org/vocab/changeset/schema#subject> >>>> ?subject . }} WHERE { GRAPH ?graph { ?st >>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> ?subject . }} LIMIT >>>> 10000000; >>>> >>>> The initial count of triples that needed to be updated was ~1 700 000 000. >>>> The .sql script used for update set the log_enable(2) at the beginning, >>>> before executing the actual update. And a checkpoint was called out in the >>>> same .sql script after the update query finished. We were able to run that >>>> script for quite a while without any problems. Suddenly running the >>>> script made virtuoso crash, the remaining triples count that needed >>>> updating was around 500 000 000. The error in virtuoso.log file shows the >>>> following: >>>> >>>> 09:13:37 In delete or rb of insert on RDF_QUAD dp 38144031 seg 6, col 3 >>>> is 10909 values and next 8276 >>>> 09:13:37 /usr/bin/virtuoso-t() [0x8d4afd] >>>> ... >>>> 09:13:37 /usr/bin/virtuoso-t() [0x53f19b] >>>> 09:13:37 /usr/bin/virtuoso-t(delete_node_input+0x13b) [0x5cbb3b] >>>> 09:13:37 /usr/bin/virtuoso-t() [0x5c7fed] >>>> 09:13:37 /usr/bin/virtuoso-t() [0x5c8416] >>>> 09:13:37 /usr/bin/virtuoso-t(table_source_input_unique+0x2a9) [0x5cfe69] >>>> 09:13:37 /usr/bin/virtuoso-t() [0x5c7fed] >>>> ... >>>> 09:13:37 /usr/bin/virtuoso-t() [0x5c826e] >>>> 09:13:37 /usr/bin/virtuoso-t(skip_node_input+0x466) [0x5cc9e6] >>>> 09:13:37 /usr/bin/virtuoso-t() [0x5c7fed] >>>> ... >>>> 09:13:37 /usr/bin/virtuoso-t() [0x5db26a] >>>> 09:13:37 /usr/bin/virtuoso-t(sf_sql_execute_w+0x74) [0x5db884] >>>> 09:13:37 /usr/bin/virtuoso-t() [0x8d8f38] >>>> 09:13:37 /usr/bin/virtuoso-t() [0x8df6fc] >>>> 09:13:37 /lib/x86_64-linux-gnu/libpthread.so.0(+0x8182) [0x7f69a6f65182] >>>> 09:13:37 /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f69a656f47d] >>>> 09:13:37 GPF: collock.c:1410 uneven length cols after delete, update or >>>> rollback of insert >>>> >>>> Do get the core dump of the crash set 'ulimit -c unlimited' and started >>>> the script again. The crash is reproducable with every run. The core dump >>>> shows the following: >>>> >>>> # gdb virtuoso-t core >>>> ... >>>> [New LWP 15882] >>>> [New LWP 15879] >>>> [Thread debugging using libthread_db enabled] >>>> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". >>>> Core was generated by `/usr/bin/virtuoso-t +wait +configfile >>>> /etc/virtuoso-opensource-7/virtuoso.ini'. >>>> Program terminated with signal SIGSEGV, Segmentation fault. >>>> >>>> (gdb) bt >>>> >>>> #0 0x00000000008d4bde in ?? () >>>> ... >>>> #6 0x000000000053f19b in ?? () >>>> #7 0x00000000005cbb3b in delete_node_input () >>>> #8 0x00000000005c7fed in ?? () >>>> #9 0x00000000005c8416 in ?? () >>>> #10 0x00000000005cfe69 in table_source_input_unique () >>>> #11 0x00000000005c7fed in ?? () >>>> ... >>>> #30 0x00000000005c826e in ?? () >>>> #31 0x00000000005cc9e6 in skip_node_input () >>>> #32 0x00000000005c7fed in ?? () >>>> ... >>>> #43 0x00000000005db26a in ?? () >>>> #44 0x00000000005db884 in sf_sql_execute_w () >>>> #45 0x00000000008d8f38 in ?? () >>>> #46 0x00000000008df6fc in ?? () >>>> #47 0x00007f69a6f65182 in start_thread (arg=0x7f691a3bd700) at >>>> pthread_create.c:312 >>>> #48 0x00007f69a656f47d in clone () at >>>> ../sysdeps/unix/sysv/linux/x86_64/clone.S:111 >>>> >>>> We run the integrity check of virtuoso with "backup '/dev/null'" and that >>>> passed successfully, so this indicated for us that the database itself is >>>> intact. >>>> >>>> The version of virtuoso we are using is: >>>> >>>> Virtuoso Open Source Edition (Column Store) (multi threaded) >>>> Version 7.2.0.3212-pthreads as of Apr 8 2015 >>>> Compiled for Linux (x86_64-pc-linux-gnu) >>>> Copyright (C) 1998-2015 OpenLink Software >>>> >>>> Do you have any suggestions why this happened and how can it be fixed? >>>> >>>> Best regards, >>>> >>>> Piret Lattikas >>>> ------------------------------------------------------------------------------ >>>> _______________________________________________ >>>> Virtuoso-users mailing list >>>> Virtuoso-users@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/virtuoso-users ------------------------------------------------------------------------------ _______________________________________________ Virtuoso-users mailing list Virtuoso-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/virtuoso-users