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